我遇到了DB2 proc问题。不知道我在做错误的地方。
我有2个SP。 SP1和SP2。
我从SP2调用SP1但是SP2没有返回任何输出(返回0除外)。
请你检查一下是什么问题。
我知道我可以将SP1重命名为SP2,但有一些要求是我需要从SP2调用SP1的原因。
CREATE PROCEDURE SP1()
SPECIFIC SP1
RESULT SETS 1
READS SQL DATA
NOT DETERMINISTIC
NULL CALL
LANGUAGE SQL EXTERNAL ACTION
INHERIT SPECIAL REGISTERS
P1:BEGIN
DECLARE X CURSOR
WITH RETURN FOR
SELECT A.* FROM EMP A;
OPEN X;
END P1;
CREATE PROCEDURE SP2()
SPECIFIC SP2
RESULT SETS 1
READS SQL DATA
NOT DETERMINISTIC
NULL CALL
LANGUAGE SQL EXTERNAL ACTION
INHERIT SPECIAL REGISTERS
P2:BEGIN
CALL SP1();
END P2;
答案 0 :(得分:1)
似乎您希望SP2将结果集从嵌套的SP1返回给请求的应用程序(=客户端),而不进行任何更改并且不进行任何处理。如果是这样,那么在SP1内部必须声明光标'WITH RETURN TO CLIENT'。这允许结果集通过SP1。
如果您希望在SP2内部处理 SP1的结果集,那么您必须为嵌套过程使用结果集定位器并为其分配游标并处理游标正常的方式。
有关这些语句的详细信息,请参阅Db2在线知识中心,了解您的Db2版本和DB2服务器平台。