如何在sql / pl中执行子过程

时间:2019-08-19 14:45:09

标签: db2 sql-pl

我正在执行从pl / sql(oracle)到sql / pl(DB2)的过程迁移,我不知道如何将子过程传递给DB2

由于我不是系统管理员,因此无法将DB2更改为与pl / sql兼容

示例

items:
data: Array(1)
0: {reactionType: Array(1), _id: "5d46f4cd5f68325378603144", name: "ravi", email: "nischals@ravi.com", phone: 12345678, …}
}
length: 5
status: 200
statusText: "OK"

2 个答案:

答案 0 :(得分:0)

如果您的Db2服务器在Linux / Unix / Windows上运行,则在ANSI SQL PL中,如果本地过程嵌套在另一个SQL PL过程(或复合语句)的主体中,则可以使用DECLARE关键字来定义当地程序。 v10.1及更高版本中的Db2-LUW支持此功能。

如果您有很多Oracle PL SQL存储过程,请与解决方案架构师(如果有)和DBA讨论配置Db2服务器以支持Oracle兼容性的可能性。这样可以为您节省一些钱。

您可以看到SQL PL here的Db2语法(请确保在下拉列表中选择正确的Db2服务器产品版本)。

对本地程序有一些限制,因此请仔细研究文档。但是您的本地过程可以访问在范围内的周围块中定义的变量和对象。

您的示例在ANSI SQL PL中可能如下所示:

create or replace PROCEDURE "SP_NOSTRADAMUS_PRODUTO" 
begin
  declare V_EXISTE_TAB  integer default 0;
  declare PROCEDURE PR_HIRQ_PRODUTO_OR 
  BEGIN
  -- body of pr_hirq_produto_or procedure
  END;
  -- body of sp_nostradamus_produto procedure
END
@

答案 1 :(得分:-1)

Db2没有子过程,甚至不确定为什么Oracle会这样做。在db2中,您只需将“ sub”过程创建为常规过程,然后“调用”它们即可。

create procedure a( ....

create procedure b ....

create procedure main(...)
begin
  call a(...);
  call b(...);
end