将一个存储过程调用到DB2中的另一个存储过程

时间:2014-12-24 06:09:30

标签: stored-procedures db2

我遇到的问题是我必须从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;

1 个答案:

答案 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;