Oracle存储过程实例

/*不带任何参数存储过程*/
create or replace procedure out_date is
begin
  dbms_output.put_line(sysdate);
end out_date;

--测试
SQL> set serveroutput on;
SQL> exec out_date;


/*带IN和out参数的存储过程*/
create or replace procedure get_name(v_id in number, v_name out varchar2) as
begin
  select name into v_name from employee where id = v_id;
exception
  when no_data_found then
    raise_application_error(-20001, '你输入的ID不存在!');
end get_name;

--测试
SQL> var v_name varchar2(20);
SQL> exec get_name(4,:v_name);

PL/SQL 过程已成功完成。

SQL> print v_name;

V_NAME
--------------------------------
4

 

附:

 

为参数传递变量和数据位置传递,名称传递,组合传递三种
1.位置传递:在调用子程序时按照参数定义的顺序为参数指定相应的变量或数值
  exec add_dept(40,'sales','new york');
  exec add_dept(10);
2.名称传递:在调用子程序时指定参数名,并使用关联符号=>为其提供相应的数值或变量
  exec add_dept(dname=>'sales',dno=>50);
  exec add_dept(dno=>30);
3.组合传递:同时使用位置传递和名称传递
  exec add_dept(50,loc=>'new york');
  exec add_dept(60,dname=>'sales',loc=>'new york');
 
查看过程原代码
oracle会将过程名,源代码以及其执行代码存放到数据字典中.执行时直接按照其执行代码执行可查询数据字典(user_source)
select text from user_source where name='get_name';
 
删除过程
drop procedure get_name;

 
 

 

 

你可能感兴趣的:(oracle,sql)