二十二、存储过程:高效率执行

                                  存储过程:高效率执行

1、存储过程概念及执行

存储过程是存储在数据库服务器端一段或者多段SQL语句的PL/SQL代码块。

创建存储过程:

CREATE PROCEDURE test
AS 
BEGIN
  DBMS_OUTPUT.put_line('测试存储过程的创建');
END; 

PL/SQL窗口执行存储过程:

begin
  -- Call the procedure
  test;
end;

命令窗口执行存储过程:

EXEC  procedure;--procedure是存储过程名

程序中调用存储过程用 call 存储过程名:

hibernateDao.excuteSqlUpdate("{Call proc_stuInfo()}");//存储过程proc_stuInfo

2、通过USER_SOURCE 视图查看存储过程

SELECT * FROM USER_SOURCE WHERE NAME='TEST' ORDER BY LINE

在这里插入图片描述

每个TEXT文本都保存了一段脚本。

3、查看存储过程的错误

在命令行中(TEST存储过程名):

SQL> SHOW ERRORS PROCEDURE FINDEMP
Errors for PROCEDURE SCOTT.FINDEMP:
LINE/COL ERROR
-------- ----------------------------------
4/3      PLS-00428: 在此 SELECT 语句中缺少 INTO 子句

4、无参存储过程


CREATE PROCEDURE findEMP
AS 
BEGIN
  UPDATE EMP SET DEPTNO=15 WHERE EMPNO=7566;
  DBMS_OUTPUT.put_line('成功执行存储过程');
END; 

在存储过程中使用游标:

CREATE PROCEDURE findoneEMP AS
    CURSOR emp_cur
    IS SELECT * FROM EMP;      --声明游标
    emp_var EMP%ROWTYPE;       --声明变量:变量emp_var是表EMP的行类型
    
    BEGIN                      
      OPEN emp_cur;                         --打开游标
           FETCH emp_cur INTO emp_var;      --获取游标数据
           DBMS_OUTPUT.put_line(emp_var.EMPNO ||'-'|| emp_var.ENAME||'-'||emp_var.JOB||'-'||emp_var.MGR);   
           --输出数据
      CLOSE emp_cur;                        --关闭数据  
    END;

5、有参储存过程

CREATE PROCEDURE getEMP (emp_no IN number)
AS
    emp_var EMP%ROWTYPE;       --声明变量:变量emp_var是表EMP的行类型

    BEGIN                      
      SELECT * INTO emp_var FROM EMP WHERE EMPNO=emp_no;
      IF SQL%FOUND THEN 
        DBMS_OUTPUT.put_line('==========================');
        DBMS_OUTPUT.put_line(emp_var.EMPNO ||'-'|| emp_var.ENAME||'-'||emp_var.JOB||'-'||emp_var.MGR);   
      END IF;
    END;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值