在DB2中重载存储过程

时间:2013-05-30 13:02:11

标签: oracle stored-procedures plsql db2

我知道,可以在ORACLE中重载PLSQL函数和过程。 我试图在DB2中重载一个过程但是抛出了错误。 DB2是否限制了这一点,或者我做错了什么。

Pro 1

CREATE OR REPLACE PROCEDURE  saju_pro (
     s_num1      IN     NUMBER,
     s_num2      IN OUT     NUMBER )
AS
BEGIN
    s_num2 := (s_num1+s_num2);
END saju_pro;
/

PRO2

CREATE  PROCEDURE  saju_pro (
     s_num1      IN     NUMBER,
     s_num2      IN     NUMBER,
     s_num3      OUT     NUMBER  )
AS
BEGIN
    s_num3 := (s_num1+s_num2);
END saju_pro;

1 个答案:

答案 0 :(得分:2)

可以在DB2中重载过程。有两种方法可以做到这一点。一种是将程序声明并定义为PL / SQL包的一部分:

create or replace package body blah
as
  PROCEDURE  saju_pro (
    s_num1      IN     NUMBER,
    s_num2      IN OUT     NUMBER )
  AS
  ...
  PROCEDURE  saju_pro (
    s_num1      IN     NUMBER,
    s_num2      IN     NUMBER,
    s_num3      OUT     NUMBER  )
  AS
  ...
end;

如果您确实需要独立过程,则必须使用DB2 SQL PL语法而不是PL / SQL语法创建它们,因为只使用SQL PL语法,您可以使用SPECIFIC选项让DB2区分这两者。

CREATE OR REPLACE PROCEDURE  saju_pro (
 IN    s_num1   NUMBER,
 INOUT s_num2   NUMBER )
SPECIFIC pro1
BEGIN
 SET s_num2 = (s_num1+s_num2);
END;
-- etc.