利用存储过程可以将多个SQL的逻辑操作整合到一个脚本中并按计划执行。
- AS、IS关键字之前是存储过程的参数和属性定义,之后是定义存储过程的具体内容;
- 在视图(VIEW)中只能用AS不能用IS;
- 在游标(CURSOR)中只能用IS不能用AS;
- IN表示该参数类型是输入,是参数的默认模式,OUT表示在存储过程中该参数可输出;
- CURSOR(游标)是用于存储临时数据的容器;
- CURSOR(游标)打开后一定要关闭,避免不必要的资源占用;
- ||连接符用于连接字符串与变量;
/*
* AS、IS关键字之前是存储过程的参数和属性定义,之后是定义存储过程的具体内容;
* 在视图(VIEW)中只能用AS不能用IS;
* 在游标(CURSOR)中只能用IS不能用AS;
* IN表示该参数类型是输入,是参数的默认模式,OUT表示在存储过程中该参数可输出;
* CURSOR(游标)是用于存储临时数据的容器;
* CURSOR(游标)打开后一定要关闭,避免不必要的资源占用;
* ||连接符用于连接字符串与变量;
*/
CREATE OR REPLACE PROCEDURE 存储过程名称(
输入参数 IN VARCHAR,
输出参数 OUT VARCHAR,
参数 VARCHAR) AS
变量名称 VARCHAR2(10);--声明变量
变量数字 NUMBER :=0;--为数字类型变量赋初始值
游标名称 CURSOR IS
SELECT * FROM 表名 WHERE 条件;--声明游标
BEGIN
OPEN 游标名称;
LOOP
FETCH 游标名称 INTO 变量名称;
EXIT WHEN 游标名称%NOT FOUND;
SELECT COUNT(1) INTO 变量数字 FROM 表名 WHERE 条件--这里用来编写逻辑处理SQL块
END LOOP;
CLOSE 游标名称;
COMMIT;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.put_line('sqlerrm:'||SQLERRM||'somemsg');--打印输出错误信息
ROLLBACK;
END 存储过程名称;
下面是利用Oracle可视化工具PL-SQL 编写的一个存储过程小栗子:
通过脚本调试工具,可以测试最终的输入输出效果: