oracle中的存储过程使用

标签: oracle 存储过程 | 发表时间:2012-09-11 07:49 | 作者:woshixuye
出处:http://blog.csdn.net
一存储过程的基本应用

 

1 创建存储过程(SQL窗口)

create or replace procedure update_staff
as
begin
       update staff set name = 'xy';
       commit;
end update_staff;

存储过程适合做更新操作,特别是大量数据的更新

 

2 查看存储过程在数据字典中的信息(SQL窗口)

select object_name,object_type,status from user_objects where lower(object_name) = 'update_staff'

 

3 查看存储过程语句(SQL窗口)
 
select * from user_source where lower(name) = 'update_staff'

 

4 执行存储过程(Command窗口)

execute update_staff;

 

5 存储过程的优点

① 提高数据库执行效率。使用SQL接口更新数据库,如果更新复杂而频繁,则需要频繁得连接数据库。
② 提高安全性。存储过程作为对象存储在数据库中,可以对其分配权限。
③ 可复用性。

 


二带输入参数的存储过程

 

1 创建存储过程(SQL窗口)

create or replace procedure update_staff(in_age in number) as
begin
        declare newage number;
        begin
                newage := in_age + 10;
                update staff set age = newage;
                commit;
        end;
end update_staff;


2 执行存储过程(Command窗口)

execute update_staff(10);


3 默认值

只有in参数可以有默认值,比如

create or replace procedure update_staff(in_name in varchar2,in_age in number default 20)
调用时可只写execute update_staff('xy');

 


三带输出参数的存储过程


1 创建存储过程(SQL窗口)

create or replace procedure update_staff (in_age in number,out_age out number) as
begin
       update staff set age = in_age;
       select age into out_age from student where num = 1;
       commit;
end update_staff;

存储过程没有显示制定返回值,但输出参数可以输出


2 输出存储过程结果(Command窗口)

set serverout on;
declare age number;
begin
 update_staff(20,age);
 dbms.output.put_line(age);
end;

 

 

四带输入输出的存储过程

 

其中最典型的应用是交换两个数的值


1 创建存储过程(SQL窗口)

create or replace procedure swap (param1 in out number, param2 in out number) as
begin
       declare param number;
       begin
               param:=param1;
               param1:=param2;
               param2:=param;
       end;
end swap;


2 输出存储过程结果(Command窗口)

set serverout on;
declare p1 number:= 25;
p2 number:=35;
begin
swap(p1,p2);
dbms_output.put_line(p1);
end;

 

 

五参数总结

 

①输入参数:有调用者传递给存储过程,无论存储过程如何调用该参数,该参数的值都不能被改变,可以认为该参数的值是只读的。
②输出参数:可以作为返回值来用。可以认为可写。
③输入输出参数:这中类型的参数和java方法中的参数最像,传入方法,可读可写(final标识符除外)。
④参数顺序总结如下:具有默认值的参数应该位于参数列表的末尾,因为有时用户需要省略该参数。没有默认值的参数可以遵循"in -> out -> in out"。

作者:woshixuye 发表于2012-9-11 7:49:32 原文链接
阅读:0 评论:0 查看评论

相关 [oracle 存储过程] 推荐:

oracle 存储过程 基础

- - ITeye博客
差不多一年没写过存储过程,最近要写,发现基本忘了,google一番之后,觉得很有必要把基础的东西写下来备忘. decalre -- 变量声明 var1 number(2);. -- 仅声明 var2 char(2) := '11';. -- 在声明的同时初始化 begin. -- 语句 end; -- 语句块结束.

oracle中的存储过程使用

- - CSDN博客推荐文章
一存储过程的基本应用  . 1 创建存储过程(SQL窗口). 存储过程适合做更新操作,特别是大量数据的更新. 2 查看存储过程在数据字典中的信息(SQL窗口). 3 查看存储过程语句(SQL窗口). 4 执行存储过程(Command窗口). 使用SQL接口更新数据库,如果更新复杂而频繁,则需要频繁得连接数据库.

ORACLE 包内的存储过程的动态sql

- - CSDN博客数据库推荐文章
  function hello_function(p_param3 varchar2) --参数与包头中必须保持一致.         execute immediate 'insert into logtable1 values (:1,:2,:3,:4)' using '1','1','2','3'; --只能动态插入.

oracle 存储过程执行状态查询

- - Oracle - 数据库 - ITeye博客
从网上搜集了些资料,查看那些oracle procedure 正在执行,记录下以便日后使用:. 1、如何查看ORACLE中正在运行的存储过程. 使用 oracle 审核,记录和查看过程的执行. 已有 0 人发表留言,猛击->> 这里<<-参与讨论. —软件人才免语言低担保 赴美带薪读研.

oracle存储过程通过JOB来实现并行执行_u012209894的专栏-CSDN博客

- -
1、oracle版本为10G及以上,由于网上很多都没有完善,所以特此完善记录下来,仅供参考. 需求:多个无依赖关系的存储过程并行执行(使用该功能前测试下服务器情况,貌似并行任务和数据库的CPU个数有直接关系,小于等于CPU个数*4). 实现思路:在存储过程中创建任务,以便能直接通过JAVA输入动态参数调用.

mysql存储过程 游标

- - ITeye博客
end if; insert into table3 (name) select name from table2 where id =i; end loop cursor_loop; CLOSE c1; end $ delimiter ;. 已有 0 人发表留言,猛击->> 这里<<-参与讨论.

SQL 存储过程之游标

- - CSDN博客推荐文章
使用游标循环 SQL 查询结果: . --- 声明变量 DECLARE @bid nvarchar(30); DECLARE @address nvarchar(50); --- 定义游标 DECLARE cur CURSOR for. select bid,[Address] from building; --- 打开游标 OPEN cur.

SQL Server 存储过程小结

- - CSDN博客数据库推荐文章
Transact-SQL中的存储过程,非常类似于Java语言中的方法,它可以重复调用. 当存储过程执行一次后,可以将语句缓存中,这样下次执行的时候直接使用缓存中的语句.     存储过程Procedure是一组为了完成特定功能的SQL语句集合,经编译后存储在数据库中,用户通过指定存储过程的名称并给出参数来执行.

mysql 存储过程的简单例子

- - 数据库 - ITeye博客
mysql 存储过程的简单例子. -- 定义新的语句分隔符// delimiter // create procedure pd016() begin. -- 本存储过程主要实现以下操作. -- 2.根据游戏表数据去获取类型表的信息. -- declare 必须紧跟着在begin之后定义. -- 如果用了游标cursor,则必须定义这个游标结束标志,用来判读游标是否到底.

hibernate调用返回游标的存储过程

- - Oracle - 数据库 - ITeye博客
注:原创作品,转载请注明出处.     上篇博文介绍的是hibernate调用返回单值的存储过程,本片博文说的是hibernate调用返回游标的存储过程.     此此扁博文的存储过程的功能相当于是jdbc调用select 的作用. 1,创建oracle中的包,并在该包中创建的游标类型. ---创建oracle的程序包,在该包中创建一个游标类型 --该类型在存储过程中用来生命输出参数的类型 create or replace package pkg_return_list as type list_cursor is ref cursor; end pkg_return_list;.