首页 > 解决方案 > SQLRPGLE & JSON_OBJECT CTE 语句 -101 错误

问题描述

这个程序编译正确,我们在 V7R3 上 - 但是在运行时它收到一个 SQLCOD 为 -101 和一个 SQLSTATE 代码是 54011,它指出: 为表、视图或表函数指定了太多列。这是一个正在创建的非常小的 JSON,所以我认为这不是问题。

RPGLE 代码:

dcl-s OutFile sqltype(dbclob_file);    
  xfil_tofile = '/ServiceID-REFCODJ.json';     
 Clear OutFile;                                         
 OutFile_Name = %TrimR(XFil_ToFile);                    
 OutFile_NL = %Len(%TrimR(OutFile_Name));               
 OutFile_FO = IFSFileCreate;                            
 OutFile_FO = IFSFileOverWrite;                         


exec sql                                                              
 With elm (erpRef) as (select json_object                             
            ('ServiceID' VALUE trim(s.ServiceID),                     
            'ERPReferenceID' VALUE trim(i.RefCod) )                   
             FROM PADIMH I                                     
             INNER JOIN PADGUIDS G ON G.REFCOD = I.REFCOD      
             INNER JOIN PADSERV S ON S.GUID = G.GUID           
             WHERE G.XMLTYPE = 'Service')                             
                                                                      
  , arr (arrDta) as (values json_array  (                             
            select erpRef  from elm format json))                     
                                                                      
  , erpReferences (refs) as ( select json_object  ('erpReferences'  : 
         arrDta Format json) from arr)                                
                                                                      
  , headerData (hdrData) as (select  json_object(                     
  'InstanceName' : trim(Cntry) )                                      
   from padxmlhdr                                              
   where cntry = 'US')                                                
                                                                      
      VALUES (                                                        
     select json_object('header' : hdrData format json,               
    'erpReferenceData' value refs format json)                        
     from headerData, erpReferences )                                 
INTO  :OutFile; 

对此的任何帮助将不胜感激,这是我们第一次尝试创建用于发送的 JSON,并且之前没有遇到过这个问题。

谢谢,约翰

标签: db2-400rpgle

解决方案


对于延迟回到这个问题,我深表歉意。它已得到纠正,问题出在“价值观”声明上。
这是使其正常工作所需的正确代码:

Select json_object('header' : hdrData format json,
'erpReferenceData' value refs format json) 
INTO  :OutFile                       
From headerData, erpReferences )  

推荐阅读