Oracle存储过程

原创 2012年03月26日 18:55:04
--无参的存储过程
create or replace procedure proc_one
as
     v_emp emp%rowtype;
begin
   select * into v_emp from emp where empno=7788;
   dbms_output.put_line(v_emp.ename||'  '||v_emp.sal);
end;
--在pl/sql developer command窗口查看过程编译错误
/
show errors;
/


--调用过程授权
grant execute on proc_one to px;     --授予执行权给px用户
grant execute on proc_one to public;--授予所有用户


--调用存储过程
SQL> set serveroutput on; --设置输出
SQL> exec scott.proc_one;
SQL> exec scott.proc_one();
        --PL/SQL代码块方式调用
begin
   proc_one();
end;


--Oracle存储过程参数形式有:
--in         默认形式  可以省略in   可以指定默认值
--out        输出参数 
--in out    输入输出参数    

--带输入参数的存储过程
create or replace procedure proc_two
(v_no in number:=7788) --参数不需要指定长度并可以指定默认值  可以省略in
as
   v_emp emp%rowtype;
begin
   select * into v_emp from emp where empno=v_no;
   dbms_output.put_line(v_emp.ename||'  '||v_emp.sal);
   exception 
     when no_data_found then
     dbms_output.put_line('没有找到数据');
end;


--带输出参数的存储过程
create or replace procedure proc_three
(v_no in dept.deptno%type:=10,
 out_deptname out dept.dname%type)
is
begin
  select dname into out_deptname from dept where deptno=v_no;
end;

--调用
declare
  v_dname dept.dname%type;
  v_dno dept.deptno%type;
begin
   v_dno:='&部门编号';
   --proc_three(v_dno,v_dname);
   proc_three(out_deptname=>v_dname,v_no=>v_dno);
--通过指定名称传递实参,这样可以不按位置顺序
   dbms_output.put_line('编号为'||v_dno||'的部门名称:'||v_dname);
end;


--带输入输出参数的存储过程
create or replace procedure proc_four
(v_a in out number,v_b in out number)
as
  v_temp number;
begin
   v_temp:=v_a;
   v_a:=v_b;
   v_b:=v_temp;
end;

--调用
declare
   n number:=100;
   m number:=200;
begin
   dbms_output.put_line('交换前--n:'||n||' m:'||m);
   proc_four(n,m);
   dbms_output.put_line('交换后--n:'||n||' m:'||m);
end;

相关文章推荐

oracle 存储过程

  • 2017年11月20日 18:32
  • 68KB
  • 下载

Oracle 存储过程 使用示例

            因为工作的需要,最近一直在写存储过程。工作了3年,一直都是做管理,也没有正儿八经的去写过存储过程,这次正好可以好好练习一下。            在这里说一条使用存储过程很重...

oracle 存储过程学习

  • 2015年10月15日 11:03
  • 48KB
  • 下载

Oracle存储过程及函数的练习题

--实训题--(1)创建一个存储过程,以员工号为参数,输出该员工的工资create or replace procedure p_sxt1(v_empno in emp.empno%type, v_s...
  • myinc
  • myinc
  • 2013年12月05日 17:06
  • 6037

oracle存储过程各种写法

  • 2015年06月18日 23:41
  • 4KB
  • 下载

oracle存储过程超详细使用手册

  • 2015年09月25日 16:53
  • 311KB
  • 下载

Oracle利用存储过程性 实现分页

分页的简单配置 在上一次已经说过了 这边说说怎么在存储过程中实现分页 首先建立存储过程 参考 http://www.cnblogs.com/gisdream/archive/2011/11/...

oracle存储过程例子

  • 2015年09月23日 11:21
  • 17KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Oracle存储过程
举报原因:
原因补充:

(最多只允许输入30个字)