1、创建PROCEDURE的参数的区别
1)参数类型和参数名称的位置不同
db2: CREATE PROCEDURE PRO1 (IN OrgID int)
oracle:CREATE PROCEDURE PRO1 (OrgID IN int)
2)同时作为输入输出参数的写法不同
db2: CREATE PROCEDURE PRO1 ( INOUT OrgID int) INOUT连着写
oracle:CREATE PROCEDURE PRO1 (OrgID IN OUT int) IN OUT中间空格隔开,而且必须IN在OUT之前
3)没有输入或输出参数时
db2: CREATE PROCEDURE PRO1 ()
oracle:CREATE PROCEDURE PRO1 不能有空的括号
2、变量定义和BEGIN END体的位置不同
db2中变量定义在BEGIN END体内,并且每个变量都要用DECLARE声明;存储过程结束时,END后跟P1,并且不需要分号
oracle中变量定义必须在BEGIN END体外,变量都不需要用DECLARE声明(有种说法是,第一个变量需要DECLARE,其他变量不需要);存储过程结束时,END后跟存储过程的名称,并且需要分号
db2:CREATE PROCEDURE PRO1()
LANGUAGE SQL
P1: BEGIN
--变量定义
DECLARE INSERT_DATE TIMESTAMP;
DECLARE ALLDEPT_NO VARCHAR(20);
--具体操作
SELECT a FROM TAB_1;
.........
END P1
oracle: CREATE PROCEDURE PRO1
IS
--变量定义
INSERT_DATE TIMESTAMP;
ALLDEPT_NO VARCHAR(20);
BEGIN
--具体操作
SELECT a FROM TAB_1;
.........
END PRO1;
3、控制语句的不同
db2: IF THEN ...... ELSEIF THEN .... END IF;
oracle: IF THEN ...... ELSIF THEN .... END IF;
4、异常处理的不同
1)参数类型和参数名称的位置不同
db2: CREATE PROCEDURE PRO1 (IN OrgID int)
oracle:CREATE PROCEDURE PRO1 (OrgID IN int)
2)同时作为输入输出参数的写法不同
db2: CREATE PROCEDURE PRO1 ( INOUT OrgID int) INOUT连着写
oracle:CREATE PROCEDURE PRO1 (OrgID IN OUT int) IN OUT中间空格隔开,而且必须IN在OUT之前
3)没有输入或输出参数时
db2: CREATE PROCEDURE PRO1 ()
oracle:CREATE PROCEDURE PRO1 不能有空的括号
2、变量定义和BEGIN END体的位置不同
db2中变量定义在BEGIN END体内,并且每个变量都要用DECLARE声明;存储过程结束时,END后跟P1,并且不需要分号
oracle中变量定义必须在BEGIN END体外,变量都不需要用DECLARE声明(有种说法是,第一个变量需要DECLARE,其他变量不需要);存储过程结束时,END后跟存储过程的名称,并且需要分号
db2:CREATE PROCEDURE PRO1()
LANGUAGE SQL
P1: BEGIN
--变量定义
DECLARE INSERT_DATE TIMESTAMP;
DECLARE ALLDEPT_NO VARCHAR(20);
--具体操作
SELECT a FROM TAB_1;
.........
END P1
oracle: CREATE PROCEDURE PRO1
IS
--变量定义
INSERT_DATE TIMESTAMP;
ALLDEPT_NO VARCHAR(20);
BEGIN
--具体操作
SELECT a FROM TAB_1;
.........
END PRO1;
3、控制语句的不同
db2: IF THEN ...... ELSEIF THEN .... END IF;
oracle: IF THEN ...... ELSIF THEN .... END IF;
4、异常处理的不同
转载于:https://blog.51cto.com/infosec/46644