我正在使用access客户机解决方案在ibmi上测试一个sql存储过程。该存储过程有两个对其他外部存储过程的调用,这些外部存储过程调用rpgsqle程序,每个程序都向所选数据的客户端返回一个数据集。如果我使用sql返回数据,我可以得到两个返回的数据集,但是由于我还有其他处理要做,所以我使用sqlrpgle程序来选择、更新和返回数据。在我的测试中,我一次只能得到一个数据集——第二个。如果我把第二个电话评论掉,我就能得到第一个。我尝试过增加返回的数据集的数量,只是想看看是否有问题,但结果是一样的。
注意:两个sqlrpgle程序都创建一个全局临时表,其中包含将在数据集中返回的数据。
CREATE PROCEDURE SP_PROC
( IN STORE DEC(3,0) )
DYNAMIC RESULT SETS 2
LANGUAGE SQL
MODIFIES SQL DATA
CALLED ON NULL INPUT
BEGIN
CALL SP_PGM01(STORE);
CALL SP_PGM02(STORE);
END
pgm01编号:
CREATE PROCEDURE SP_PGM01
( IN STORE DEC(3,0) )
DYNAMIC RESULT SETS 1
LANGUAGE RPGLE
MODIFIES SQL DATA
CALLED ON NULL INPUT
EXTERNAL NAME PGM01
PARAMETER STYLE GENERAL ;
... (PGM01 SQLRPGLE additional processing not shown)
SqlStmt = 'Select * from session.SKUS +
ORDER BY T1SKU, T1TypeA, T1TypeB, T1TypeC' ;
Exec Sql Prepare s1 From :SqlStmt;
Exec Sql Declare C1_SKU Cursor WITH RETURN TO CLIENT For s1;
Exec Sql Open C1_SKU;
Exec Sql SET RESULT sets WITH RETURN TO CLIENT cursor C1_SKU;
* INLR = *On;
Return;
pgm02编号:
CREATE PROCEDURE SP_PGM02
( IN STORE DEC(3,0) )
DYNAMIC RESULT SETS 1
LANGUAGE RPGLE
MODIFIES SQL DATA
CALLED ON NULL INPUT
EXTERNAL NAME PGM02
PARAMETER STYLE GENERAL ;
... (PGM02 SQLRGPLE additional processing not shown)
SqlStmt = 'Select * from session.UPCS +
ORDER BY T2UPC, T2SKU' ;
Exec Sql Prepare s2 From :SqlStmt;
Exec Sql Declare C1_UPC Cursor WITH RETURN TO CLIENT for s2;
Exec Sql Open C1_UPC;
Exec Sql SET RESULT sets WITH RETURN TO CLIENT cursor C1_UPC;
* INLR = *On;
Return;
这似乎很直截了当-任何帮助将不胜感激。
迈克
暂无答案!
目前还没有任何答案,快来回答吧!