如何在 sql / pl 中执行子程序
How to do a sub procedure in sql / pl
我正在将 pl / sql (oracle) 中的过程迁移到 sql / pl (DB2),但我不知道如何将子过程传递给 DB2
因为我不是系统管理员,所以我无法将 DB2 更改为 pl / sql 兼容
例子
create or replace PROCEDURE "SP_NOSTRADAMUS_PRODUTO"
AS
V_EXISTE_TAB NUMBER := 0;
PROCEDURE PR_HIRQ_PRODUTO_OR
AS
BEGIN
END
如果您的 Db2 服务器在 Linux/Unix/Windows 上运行,在 ANSI SQL PL 中,如果您有一个本地过程嵌套在另一个 SQL PL 过程(或复合语句)的主体中),然后使用 DECLARE 关键字定义本地过程。这在 v10.1 及更高版本中受 Db2-LUW 支持。
如果您有很多 Oracle PL SQL 存储过程,请与您的解决方案架构师(如果有的话)和 DBA 讨论配置 Db2 服务器以支持 Oracle 兼容性的可能性。这可能会为您节省一些钱。
您可以查看 SQL PL here 的 Db2 语法(确保 select 下拉列表中 Db2-server 产品的正确版本)。
本地程序有一些限制,请仔细阅读文档。但是您的本地过程可以访问在范围内的周围块中定义的变量和对象。
您的示例在 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
@
Db2 没有子过程,甚至不知道为什么 oracle 会有。在 db2 中,您只需创建 'sub' 过程作为常规过程,然后 'CALL' 它们。
create procedure a( ....
create procedure b ....
create procedure main(...)
begin
call a(...);
call b(...);
end
我正在将 pl / sql (oracle) 中的过程迁移到 sql / pl (DB2),但我不知道如何将子过程传递给 DB2
因为我不是系统管理员,所以我无法将 DB2 更改为 pl / sql 兼容
例子
create or replace PROCEDURE "SP_NOSTRADAMUS_PRODUTO"
AS
V_EXISTE_TAB NUMBER := 0;
PROCEDURE PR_HIRQ_PRODUTO_OR
AS
BEGIN
END
如果您的 Db2 服务器在 Linux/Unix/Windows 上运行,在 ANSI SQL PL 中,如果您有一个本地过程嵌套在另一个 SQL PL 过程(或复合语句)的主体中),然后使用 DECLARE 关键字定义本地过程。这在 v10.1 及更高版本中受 Db2-LUW 支持。
如果您有很多 Oracle PL SQL 存储过程,请与您的解决方案架构师(如果有的话)和 DBA 讨论配置 Db2 服务器以支持 Oracle 兼容性的可能性。这可能会为您节省一些钱。
您可以查看 SQL PL here 的 Db2 语法(确保 select 下拉列表中 Db2-server 产品的正确版本)。
本地程序有一些限制,请仔细阅读文档。但是您的本地过程可以访问在范围内的周围块中定义的变量和对象。
您的示例在 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
@
Db2 没有子过程,甚至不知道为什么 oracle 会有。在 db2 中,您只需创建 'sub' 过程作为常规过程,然后 'CALL' 它们。
create procedure a( ....
create procedure b ....
create procedure main(...)
begin
call a(...);
call b(...);
end