尝试使用 value/into 和 select 内的标记来执行动态 sql
DCL-DS GroupDS;
wGrpSOAId Packed(7:0);
wAttach Packed(7:0);
wNotAttach Packed(7:0);
End-Ds;
wFrom1 = 'FROM TBL1.ADD';
//Build 'Group counts' SQL statements
wSQL1 = 'SELECT ID, ' +
' sum(Case when status=''A'' then 1 else 0 end), ' +
' sum(Case when status=''R'' then 1 else 0 end) ' +
' INTO :GroupDS '
+ %Trim(wFrom1) +
' WHERE ID = ? ' +
' GROUP BY ID'''
Exec Sql prepare @GrpSql from :wSQL1;
Exec Sql Execute @GrpSql using :wID;
是否可以将此查询放入values/into? 类似于 VALUES(wSQL1 或实际选择) INTO ?,?,?
我还没有找到任何这样的例子,还是我需要使用光标?
SELECT ... INTO
无法动态准备...
但是,
VALUES ... INTO
可以。
这应该很接近...
DCL-DS GroupDS;
wGrpSOAId Packed(7:0);
wAttach Packed(7:0);
wNotAttach Packed(7:0);
End-Ds;
wFrom1 = 'FROM TBL1.ADD';
//Build 'Group counts' SQL statements
wSQL1 = 'VALUES (' +
' SELECT ID, ' +
' sum(Case when status=''A'' then 1 else 0 end), ' +
' sum(Case when status=''R'' then 1 else 0 end) ' +
+ %Trim(wFrom1) +
' WHERE ID = ? ' +
' GROUP BY ID' +
' ) INTO ?';
Exec Sql prepare @GrpSql from :wSQL1;
//should be checking SQLSTATE/SQLCODE
Exec Sql Execute @GrpSql using :wID, :GroupDS;
//should be checking SQLSTATE/SQLCODE