zoukankan      html  css  js  c++  java
  • oracle存储过程(带参数的存储过程)

    
    
    带参数的存储过程
    
    举例:为指定的员工涨100元的工资,打印涨前和涨后的工资
    
    如果带参,需要指定是输入参数还是输出参数
    
    
    
    create or replace procedure raisesalary(eno in number)
    
    as
    
     ---定义一个变量保存涨前的薪水,引用emp中sal的类型作为psal的类型
    
     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或者rollback,而是在调用存储过程之后再提交或回滚,这样能把存储过程封装到一个事务中。

     

    如果是命令窗口就用exec 存储过程名,举个栗子:

    1.如果是命令窗口就用exec 存储过程名,举个栗子:

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

     2.如果是PL/SQL窗口就用 begin  存储过程名  end; 举个栗子:

    begin

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

     3.如果是程序中调用就用 call 存储过程名 ,举个栗子:

    hibernateDao.excuteSqlUpdate("{Call proc_stuInfo()}");//存储过程proc_stuInfo
  • 相关阅读:
    Sql server数据库设计 7
    day08作业
    day01作业
    day07作业.
    day05作业
    day04作业
    day02作业
    初学Java的一些注意事项
    day07作业
    Week03面向对象入门
  • 原文地址:https://www.cnblogs.com/wangchuanfu/p/10960550.html
Copyright © 2011-2022 走看看