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;

linux shell 调用 oracle 存储过程

if [ $# -ne 1 ] then echo "day" exit -1 fi day=$1 tmpfilename="common.${1}`date +%s`...
  • aalbertini
  • aalbertini
  • 2010年06月09日 16:48
  • 3762

oracle存储过程初学实例

认识存储过程和函数  存储过程和函数也是一种PL/SQL块,是存入数据库的PL/SQL块。但存储过程和函数不同于已经介绍过的PL/SQL程序,我们通常把PL/SQL程序称为无名块,而存储过程和函数是以...
  • qq_37057095
  • qq_37057095
  • 2017年08月04日 11:05
  • 483

Oracle存储过程书写规范和技巧

转自:http://blog.sina.com.cn/s/blog_6f6ea9d90100www3.html ORACLE存储过程编码规范 1.1         变量规范 ...
  • zwhfyy
  • zwhfyy
  • 2016年06月03日 10:23
  • 6823

java调用oracle存储过程例子

1,导jar包---ojdbc6.jar 2,建立一个分页存储过程 create or replace procedure my_page(v_in_tableName in varchar2, ...
  • u013614451
  • u013614451
  • 2015年05月28日 23:42
  • 624

oracle 存储过程的时间计算

Oracle存储过程:创建 procedure的语法:CREATE [ OR REPLACE ] PROCEDURE [ schema.]procedure  [(argument [IN | OUT...
  • songgl
  • songgl
  • 2007年09月11日 10:19
  • 3797

oracle存储过程基础语法+提升+例子总结

1.oracle存储过程的基本语法 1.基本结构 CREATE OR REPLACE PROCEDURE 存储过程名字 ( 参数1 IN NUMBER, 参数2 IN NUMBER )...
  • G15738290530
  • G15738290530
  • 2016年07月05日 12:09
  • 3053

oracle 存储过程调优

1.对于分区表中的数据,直接删除掉分区表,alter table table_name drop partition partition_name; 因为分区表的分区相当于一个独立的表,删除分区相当于...
  • guolong1983811
  • guolong1983811
  • 2014年07月27日 15:34
  • 467

oracle 存储过程最好的记录错误方式

当你的应用有调用存储过程,而节点有几十个或者上百个,找错是不是一个很麻烦的事情,这个时候,我建议写到数据库中,下面是我做的一个demo. 1. 建立错误日志记录表 drop table PUB_P...
  • guogang83
  • guogang83
  • 2015年08月04日 18:37
  • 1847

oracle存储过程,集合对象处理

我们在进行pl/sql编程时打交道最多的就是存储过程了。存储过程的结构是非常的简单的,我们在这里除了学习存储过程的基本结构外,还会学习编写存储过程时相关的一些实用的知识。如:游标的处理,异常的处理,集...
  • u013310119
  • u013310119
  • 2016年05月13日 16:36
  • 2161

c# 调用oracle 存储过程、方法简易例子

oracle调用了,sql也差不多多,只是有些数据类型不同而已;最终如何定义还是看存储过程如何写的。 调用存储过程:  using (OleDbConnection con = new O...
  • lfqsy
  • lfqsy
  • 2015年08月06日 23:08
  • 1483
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Oracle存储过程
举报原因:
原因补充:

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