为了账号安全,请及时绑定邮箱和手机立即绑定

Oracle存储过程和自定义函数

难度初级
时长 1小时33分
学习人数
综合评分9.83
104人评价 查看评价
9.9 内容实用
9.9 简洁易懂
9.7 逻辑清晰
  • Connect Statements
    查看全部
  • 授权

    grant debug connect session,debug any procedure to scott;

    查看全部
  • 创建和使用带参数的存储过程

    举例:为指定员工,涨100块钱的工资;并且打印涨前和涨后的薪水。

    注意:存储过程和存储函数的参数需要标明该参数是输入参数还是输出参数。这里需要的是输入参数,也就是需要输入员工号。

    注意:这里已经对数据库记录做出了更改,一般不在存储过程中提交事物,因为这样不能保证在调用存储过程的代码在一个事物中。也就是哪里调用存储过程,哪里提交事物。

    证明:oracle中执行完插入,需要commit,否则查看不到。这是oracle数据库的隔离级别导致的。

    带参数存储过程创建:

    http://img3.sycdn.imooc.com/5dfeea08000169c806660538.jpg

    带参数存储过程调用:像如图中这种情况,就可以保证这两个操作在同一事物中。

    http://img3.sycdn.imooc.com/5dfeea4e0001d65d07630312.jpg

    注意:存储过程的参数声明时,只能声明类型,不可以指定长度。

    http://img1.sycdn.imooc.com//5dfef5020001f22614840608.jpg


    查看全部
  • 创建和使用存储过程

    创建存储过程语法:如图。注意:存储过程只能创建或者替换,不能修改,如果要修改就使用replace,它的意思是指如果创建时有相同的存储过程就替换该存储过程。其中AS代表声明(变量、光标)。http://img1.sycdn.imooc.com//5dfedeec0001306710030288.jpg


    举例:通过存储过程,打印Hello World。注意:在讲解PL/SQL时,如果没有声明部分,那么可以不写declare部分,但是在存储过程中AS是不能省略的,即使没有声明。Oracle数据库存储数据库对象默认采取大写方式。

    创建存储过程:

    http://img1.sycdn.imooc.com//5dfee07600018ccd05960302.jpg

    调用存储过程:

    1、execute 存储过程名。

    2、PL/SQL中调用,直接写存储过程名。

    http://img1.sycdn.imooc.com//5dfee12400016fb606010413.jpg


    查看全部
  • Oracle存储过程和存储函数(自定义函数)

    定义:存储在数据库中供所有用户程序调用的子程序(PL/SQL程序)叫存储过程,存储函数。

    存储过程和存储函数的异同点:相同点——》完成特定功能的程序。不同点——》存储函数可以使用return语句返回值。

    数据库对象:表、视图、索引、序列、同义词、存储过程、存储函数。


    查看全部
  • --带参数的存储过程

    --举例:为指定的员工涨100元的工资,打印涨前和涨后的工资
    --如果带参,需要指定是输入参数还是输出参数
    create or replace procedure raisesalary(eno in number)

    as
     ---定义一个变量保存涨前的薪水(引用emp表sal的数据类型)
     psal emp.sal%type;

    begin

     ---得到员工涨前的薪水
     select sal into psal from emp where empno=eno;
     ---给该员工涨100
     update emp set sal=sal+100 where empno=eno;

     ---需不需要commit?
     ---注意:一般不在存储过程或者存储函数中 commit和rollback
     
     ---打印涨前和涨后的工资

     dbms_output.put_line('涨前:'||psal||'涨后:'||(psal+100));

    end;

    /

    --一般在调用存储过程或者函数的时候再commit,这样可以保证所有执行是在同一个事务中进行的

    --如:

    begin

      raisesalary(7839);

      raisesalary(7566);

      commit;

    end;

    /


    查看全部
  • 一般不在存储过程或者存储函数中,commit和rollbackhttp://img1.sycdn.imooc.com//5d8a9cc60001cca612710643.jpg

    查看全部
  •   --增加未找到用户抛出异常

      CREATE OR REPLACE PROCEDURE PROSCOTTEMPADDSAL(V_EMPNO IN NUMBER,

                                                    MSG     OUT VARCHAR2) AS


      V_COUNT INTEGER := 0;

      MY_ERR EXCEPTION; --自定义异常

    BEGIN

      MSG := 'OK';

      SELECT COUNT(0) INTO V_COUNT FROM SCOTT.EMP A WHERE A.EMPNO = V_EMPNO;

      IF (V_COUNT > 0) THEN

        BEGIN

          UPDATE SCOTT.EMP SET SAL = SAL * 1.1 WHERE EMPNO = V_EMPNO;

        END;

      ELSE

        RAISE MY_ERR;

      END IF;


    EXCEPTION

      WHEN MY_ERR THEN

        MSG := '未找到工号为:[' || V_EMPNO || ']的员工信息!';

        DBMS_OUTPUT.PUT_LINE(MSG);

    END PROSCOTTEMPADDSAL;


    查看全部
  • 存储过程不能用return返回值,而存储函数可以

    查看全部
  • 存储过程和存储函数的区别在于存储函数可以返回一个值,存储过程不可以

    语法:

    create or replace procedure 名称(参数)

    AS

    PLSQL子程序;

    调用存储过程

    1. exec sayhellword();

    2. begin

      sayhelloword();

      sayhelloword();

      end;


    调用存储过程:set serveroutput on 


    查看全部
  • 存储在数据库中共所有用户程序调用的子程序叫存储过程/存储函数

    查看全部
  • 指存储在数据库中供所有用户程序调用的子程序叫存储过程、存储函数。

    相同点:完成特定功能的程序

    区别:是否用return语句返回值。有return的是存储函数,存储过程不允许使用return。

    查看全部
  • 存储过程都是数据库的对象。
    查看全部
  • -- 第一个存储过程:打印Hello World
    /*
    调用存储过程:
    1.exec sayhelloworld();
    2.begin
        sayhelloworld();
        sayhelloworld();
       end;
       /
    */
    create or replace procedure sayhelloworld
    as
    --说明部分
    begin
        dbms_output.put_line('Hello World');
     end;
     /


    查看全部
  • 表、视图、索引、序列、同义词、存储过程、存储函数都是对象

    存储过程和存储函数指存储在数据库中供所有用户程序调用的子程序叫存储过程、存储函数。

    存储过程和存储函数的相同点:完成特定功能的程序。

    存储过程和存储函数的区别:是否用return语句返回值

    查看全部

举报

0/150
提交
取消
课程须知
小伙伴们,学习本门课程需要具备PL/SQL基础,可以移步《Oracle数据库开发必备利器之PL/SQL基础》课程。除此以外,在课程中涉及到存储过程和存储函数在Java项目中的应用,因此需要小伙伴们具备Java基础并熟悉JDBC。
老师告诉你能学到什么?
1、存储过程和存储函数的创建和调用 2、存储过程和存储函数在Java项目中的应用 3、如何在应用程序中访问包下的存储过程

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!