概述
存储过程是一组为了完成特定功能的SQL语句,经编译后存储在数据库中。
创建过程
CREATE [OR REPLACE] PROCEDURE <过程名>(
参数1 [方式in|out] 数据类型,
参数2 [方式in|out] 数据类型,
参数n [方式in|out] 数据类型
) IS|AS
[可以在这里进行一些变量的声明]
BEGIN
PLSQL过程体
END <过程名>
说明:
- CREATE OR REPLACE PROCEDURE:关键字用来创建或覆盖一个原有的存储过程,OR REPLACE就是覆盖的意思,如果已经有这个存储过程了那么就覆盖掉,没有就创建。
- IS|AS:关键字
在存储过程(PROCEDURE)和函数(FUNCTION)中没有区别;
在视图(VIEW)中只能用AS不能用IS;
在游标(CURSOR)中只能用IS不能用AS。
举例
create or replace procedure ON_CURSOR(enable_var in TEST.IS_ENABLE%TYPE,count out NUMBER)
AS
CURSOR testData(enableData TEST.IS_ENABLE%TYPE) IS SELECT COUNT(UUID) FROM test WHERE IS_ENABLE=enableData;
begin
LOOP
IF testData %ISOPEN THEN
EXIT WHEN testData%NOTFOUND;
FETCH testData INTO count;
ELSE
OPEN testData(enable_var);
END IF;
END LOOP;
CLOSE testData;
end ON_CURSOR2;
调用过程
调用过程的命令是EXECUTE,在begin……end中可以直接使用过程名进行调用。
EXCUTE ON_CURSOR(1,i);
declare
i NUMBER;
begin
ON_CURSOR(1,i);
end;
删除过程
DROP PROCEDURE <过程名>;
参数说明
过程的参数分为3种类型,in,out,in out
in
表示这个参数是输入参数,供过程使用的。
out
表示这个参数是输出参数,在过程里面赋值然后外面获取。
in out
表示这个既可以输入也可以输出,双向。