e股脑电脑教程网
  • 首 页
  • 操作系统
  • 应用软件
  • 下载工具
  • 影音视频
  • 办公软件
  • 媒体制作
  • 网站建设
  • 平面设计
  • 数据库
  • 程序开发
  • 视频教程
编辑推荐: | 文章搜索:
您现在的位置: e股脑 >> 数据库 >> Oracle教程 >> 过程,函数,程序包 >> 教程正文
 
教程搜索
 
 
相关教程
  • 用Oracle 10g列值掩码技术隐藏敏感数据
  • ORACLE常用Script
  • OracleSupport全球解答的最hot的21个问
  • Oracle 中的OOP概念
  • 过程,函数,程序包
  • 异常和游标管理
  • 集合和成员函数
  • Oracle10gR2安裝
  • SQL 的高级应用
  • Install Oracle on Solaris 8/9/10
  • Install Oracle9 on RedHat
  • Start Console on Oracle9i VS Oracle
  • oracle自动imp脚本
  • Oracle9i连接sybase的透明网关的配置
  • 用裸设备来提高Oracle数据库的性能
  • 从Oracle迁移到SQL Server的陷阱
 
 

图文教程


  • Windows抢了谁的饭碗 非主流操作系统To

  • 地球还是火星 平常心看“非主流”

  • 综合运用Office 2007批量制作奖状

  • 没有系统盘如何才能修复受损系统?

  • 巧妙运用Excel中边界的附加功能!
 
 
赞 助 商
 
 
过程,函数,程序包
  • 来源:e股脑
  • 点击次数:
  • 更新时间:2007-8-9
执行该过程:

1. 使用匿名PL/SQL

分析:目的是输出两个out参数的结果,所以匿名块中也要定义2个与out参数相同的局域变量。

set serveroutput on

declare

l_ename emp.ename%type;

l_sal emp.sal%type;

begin

emp_lookup(7782, l_ename, l_sal);


dbms_output.put_line(‘Ename = ‘ || l_ename);

dbms_output.put_line(‘Sal = ‘ || l_sal);

end;

/

2. 在sql plus 中执行

分析:需要使用sql plus 的VARIABLE命令绑定参数值,即为OUT参数提供接受返回值的变量。

Variable name varchar2(10);

Variable sal number;

Exec emp_lookup(‘7782’, :name, :sal);

Print name;

Print sal;

Select :name, :sal from dual;

IN OUT 参数:

可以用来传入参数,并从存储过程返回值。

例子:输入两个数,交换值

思路:通过一个临时变量作为交换过程中的过渡

create or replace

procedure swap(

p1 in out number,

p2 in out number ) as

l_temp number; --局域变量的声明,相当于匿名块中declare之后的声明;过程:as~begin

begin

l_temp := p1;

p1 := p2;

p2 := l_temp;

end swap;

/

set serveroutput on

declare

l1 number:=100;

l2 number:=200;

begin

swap(l1,l2);

dbms_output.put_line(‘l1 = ‘|| l1);

dbms_output.put_line(‘l2 = ‘|| l2);

end;

/

关于自主事务处理: P197

我们曾经讨论过COMMIT 和 ROLLBACK的概念。

建立过程P2:

CREATE OR REPLACE PROCEDURE P2 AS

A varchar2(50);

Begin

Select venadd1 into a from vendor_master where vencode=’V002’;

Dbms_output.put_line(a);

ROLLBACK ;END;/ 建立过程P1,调用P2:CREATE OR REPLACE PROCEDURE P1 AS B varchar2(50);Begin Update vendor_master set venadd1=’10 Walls Street ‘ where vencode=’V002’; P2(); Select venadd1 into b from vendor_master where vencode=’V002’; Dbms_output.put_line(b); ROLLBACK;END;/ exec p1说明事务处理可以跨越过程继续执行。 为了防止一个过程影响其他过程,可以将其标记为自主的。这样p2中的rollback将不会影响p1 CREATE OR REPLACE PROCEDURE P2 AS A varchar2(50);PRAGMA AUTONOMOUS_TRANSACTION;Begin Select venadd1 into a from vendor_master where vencode=’V002’; Dbms_output.put_line(a); ROLLBACK ;END;/ EXEC P1; 函数:

与过程相似,遵循了相同的规则。

参数传递:只能带有in参数,不能使用out, in out 参数

函数的主要特性是必须返回一个值。

语法:

CREATE [OR REPLACE] FUNCTION function_name (


上一页  1 2 
  • 上一篇教程: 异常和游标管理
  • 下一篇教程: Oracle 中的OOP概念
  •  

    关于本站 | 广告联系 | 版权声明 | 使用帮助

    Copyright © 2004-2008 www.egunao.com All rights reserved.