我知道,可以在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;
答案 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.