我遇到的问题是我必须从DB2数据库中的另一个存储过程调用一个存储过程。我在下面给出的那种例子。
我有一个存储过程:
CREATE OR REPLACE PROCEDURE Proc1()
IS
Declare myName in varchar;
BEGIN
Select fname into myName from student where fname='x'; // is returning unique value
-- here call anoher proc2
END;
现在这个proc1过程将调用这个proc2过程。
现在我有第二个存储过程:
CREATE OR REPLACE PROCEDURE Proc2(Name in varchar)
IS
BEGIN
-- do anything
END;
答案 0 :(得分:2)
我解决了这个问题, 所以解决方案就像是如果我们想用sql命令执行proc,那么syntex就像下面的那样,
call Proc2('My Name');
我们也可以在proc中使用相同的方法。 为此,我们必须遵循一些步骤。可以说我们上面的sql调用是我们想要执行的语句。我们要将该语句转换为String并通过合并变量值来传递必要的参数。然后执行语句。
CREATE OR REPLACE PROCEDURE Proc1()
IS
Declare myName in varchar;
-- stmt variable is to execute our proc
STMT VARCHAR(4000);
BEGIN
Select fname into myName from student where fname='x'; // is returning unique value
-- this is our logic
STMT :='call Proc2('||myName||')';
EXECUTE IMMEDIATE STMT;
END;