Oracle——存储过程

1.语法格式:

create [or replace] procedure name
 [(parameter,...)]
as|is
(local declarations)
begin
  statement;
end name;

2.创建过程p_dept,输出各部门名称

SQL> create or replace procedure p_dept
  2  as
  3  cursor cur_dept is
  4    select dname from dept;
  5  begin
  6   for v_dept in cur_dept loop
  7     dbms_output.put_line('部门名称:'||v_dept.dname);
  8   end loop;
  9  end p_dept;
 10  /

3.查看编译错误

show error;

4.查看某一行代码

L start_line_number

5.执行过程

方法一:
exec p_dept;

方法二:
SQL> begin
  2    p_dept;
  3  end;
  4  /

6.对表结构更改后,涉及的存储过程会失效,这时候需要重新编译

alter procedure procedure_name compile;

 

7.例题:

SQL> create or replace procedure query_emp
  2   (v_empno emp.empno%type,v_sal out emp.sal%type,v_deptno out emp.deptno%type)
  3  as
  4  begin
  5    select sal,deptno into v_sal,v_deptno from emp where empno=v_empno;
  6   dbms_output.put_line('员工编号:'||v_empno||',工资:'||v_sal||',部门编号:'||v_deptno);
  7     exception
  8           when no_data_found then
  9                dbms_output.put_line('没有编号为'||v_empno||'的员工信息');
 10  end query_emp;
 11  /

过程已创建。

注:select只能有一个into

posted @ 2017-10-17 16:12  Queenayao  阅读(263)  评论(0编辑  收藏  举报