存储过程(Stored Procedure)与游标(Cursor)

Posted Foreordination

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了存储过程(Stored Procedure)与游标(Cursor)相关的知识,希望对你有一定的参考价值。

一、存储过程

  一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给出参数,来执行它。

在大型数据库中,存储过程和触发器具有重要的作用。无论是存储过程还是触发器,都是SQL语句和流程控制语句的集合。

存储过程的优点:

  1、存储过程只在创造时进行编译,以后每次执行存储过程都不需要重新编译,一般的SQL语句执行一次就要编译一次,所以使用存储过程可以提高数据库执行速度。

  2、当对数据库进行复杂操作时(比如对多个表进行CRUD时),可以将复杂的CRUD操作用存储过程封装起来与数据库提供的事务处理结合在一块使用。

  3、存储过程可以重复使用,可以减少数据库开发人员的工作量。

  4、存储过程安全性搞,可以设定只有某个用户才具有对指定存储过程的使用权。

Oracle的存储过程分为两种:系统存储过程和自定义存储过程。

系统存储过程:Oracle预先提供的一组完成特功能的存储过程,安装完Oracle 就有。

自定义存储过程:

Create [Or Replace] Procedure 过程名[参数[in/out/in out]]

AS/IS

说明部分

BEGIN

可执行部分

[EXCEPTION 错误处理部分]

END [过程名];

注:可选的replace:表示如果存储过程已经存在,则用新的存储过程覆盖掉原来的,常用语存储过程的重建。

参数部分:用于定义多个参数(如果没有参数,可以不写),参数有三种形式:IN,OUT,INT OUT。一般没有指定参数形式的话,默认为IN。

关键字AS也可以写成IS,后面跟存储过程的说明部分,也可以在这块定义存储过程的局部变量。

删除存储过程: DROP PROCEDURE 存储过程名;

--创建一个统计产品表总数的存储过程
CREATE OR REPLACE PROCEDURE product_count
AS 
PRODUCT_SUM NUMBER(10);
BEGIN
    SELECT COUNT(*) INTO PRODUCT_SUM FROM product_table;
    DBMS_OUTPUT.PUT_LINE(产品数量是:||PRODUCT_SUM);
END;

二、游标(Cursor)

游标:一种PL/SQL控制结构,对SQL语句的处理进行显示控制,便于对表的行数据逐条进行处理。,游标只存留在内存中。一般使用方法是:声明游标--->打开游标--->取出结果--->关闭游标。

一般使用for循环来操作游标

 

以上是关于存储过程(Stored Procedure)与游标(Cursor)的主要内容,如果未能解决你的问题,请参考以下文章

stored procedure --存储过程

Oracle中的存储过程(Stored Procedure)

数据库小技能:存储过程(stored procedure)

机房重构——存储过程(Stored Procedure)

sql 查看Stored Procedure.sql的存储过程列表和视图定义

数据库术语之存储过程(Stored Procedure)