db2-400 - 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,并且之前没有遇到过这个问题。
谢谢,约翰
解决方案
对于延迟回到这个问题,我深表歉意。它已得到纠正,问题出在“价值观”声明上。
这是使其正常工作所需的正确代码:
Select json_object('header' : hdrData format json,
'erpReferenceData' value refs format json)
INTO :OutFile
From headerData, erpReferences )
推荐阅读
- xml - XML 压缩算法(例如 XMill)怎么这么快?
- python - 如何将边缘属性作为边缘距离传递给 nx.closeness_centrality()?
- python - ETL 到 bigquery 使用气流未经许可云存储/云 sql
- asp.net-core - 如何在 ASP.NET Core 中间件中直接将响应主体设置为文件流?
- php - 需要帮助将日期数据从 csv(m/d/Y) 转换为 Y/m/d(将其写入另一个 csv)
- selenium-webdriver - Selenium Web 驱动程序的文件上传功能,用于不带 AutoIt 或 Skuliii 的非输入按钮
- java - 为什么以下代码没有产生正确的输出?
- sql - 不能从其他 hive 格式中选择插入 hive ORC 格式表
- scala - 使用 Spark Dataframes/Datasets 的动态 GroupBy 和计数
- laravel - vuejs上的动态选择框数据绑定