Oracle 存储过程的创建、调用、删除

今天在做问题调查的时候,发现在代码中调用了一个存储过程,使用下面的SQL查看了一下存储过程的具体内容:
SELECT text FROM user_source WHERE NAME = ‘F_GOF_TASK_CLOSE’ ORDER BY line;
虽然里面的内容很长很多,但也都能看得懂。
不过这个存储过程不是自己写的,以前也没有写过,所以想着,自己能不能写一个呢?然后就学习了一下存储过程的语法什么的。

存储过程语法:
CREATE OR REPLACE PROCEDURE 存储过程名字
(
参数1 IN NUMBER,
参数2 IN NUMBER
) AS
变量1 INTEGER :=0;
变量2 DATE;
BEGIN
–存储过程具体内容
END 存储过程名字

比如我们要创建一个存储过程 MY_FUNCTION:
CREATE OR REPLACE PROCEDURE MY_FUNCTION (
parm1 IN VARCHAR2, --parm1 是调用存储过程的时候需要传递的参数,使用IN关键字,代表传入参数。
trnval1 OUT Number --rtnval1 是存储过程的返回值,使用OUT关键字,代表输出的值。
) AS
var1 Number :=0;
BEGIN
SELECT COUNT(*) INTO var1 FROM V_GOFSITRX WHERE REF_NO= parm1;
IF var1 = 0 THEN
trnval1 :=0;
END IF;
IF var1 = 1 THEN
trnval1 :=5;
END IF;
END MY_FUNCTION;

调用存储过程:
DECLARE
rtn_val Number(2);
BEGIN
MY_FUNCTION(‘ASD105’,rtn_val);
DBMS_OUTPUT.put_line(rtn_val);
END;

输出结果:
Oracle 存储过程的创建、调用、删除
如果看不到DBMS_OUTPUT.put_line的输出结果,可以执行:set serveroutput on;

下面附上存储过程删除语句:

DROP PROCEDURE 存储过程名;

如:DROP PROCEDURE MY_FUNCTION;

Oracle 存储过程的创建、调用、删除