dotConnect for Oracle入门指南(七):存储过程

【下载dotConnect for Oracle最新版本】

dotConnect for Oracle(原名OraDirect.NET)建立在ADO.NET技术上,为基于Oracle数据库的应用程序提供完整的解决方案。它为设计应用程序结构带来了新的方法,提高工作效率,使数据库应用程序的开发更简便。

本篇文章包含有关存储过程使用的总体方面的信息。

存储过程是一个模式对象,由一组SQL语句和其他PL/SQL构造组成,组合在一起,存储在数据库中,并作为一个单元运行以解决特定问题或执行一组相关任务。过程使您能够将SQL的易用性和灵活性与结构化编程语言的过程功能结合起来。可能需要执行多个SQL语句的大型或复杂处理被移到存储过程中,并且所有应用程序只调用这些过程。

类似于存储过程的对象是存储函数。几乎所有对于过程来说都是正确的,也适用于函数。这些对象之间的主要区别在于函数有返回值,而过程没有。

存储过程和函数可以有输入、输出和输入/输出参数。

输入参数是一个参数,其值被传递到存储过程/函数模块中。In参数的值是常量;不能在模块中更改或重新分配。

例如,以下过程将一行插入到DEPT表中:

1

2

3

4

CREATE PROCEDURE dept_insert (pDeptno INTEGER, pDname VARCHAR, pLoc VARCHARAS

BEGIN

  INSERT INTO dept(deptno, dname, loc) VALUES (pDeptno, pDname, pLoc);

END;

它需要接收要插入到新记录中的值,因此该过程有三个输入参数,对应于表的每个字段。该过程可以在PL/SQL块内执行,如下所示:

1

2

3

begin

  dept_insert (10, 'Accounting''New York');

end;

输出参数是一个参数,其值从存储过程/函数模块传递回调用的pl/sql块。out参数必须是变量,而不是常量。它只能在模块中分配的左侧找到。不能将默认值赋给模块体外部的OUT参数。换句话说,OUT参数的行为类似于未初始化的变量。在以下示例中,存储过程返回表dept中的记录计数:

1

2

3

4

5

CREATE PROCEDURE dept_count (cnt OUT INTEGER)

AS

BEGIN

  SELECT COUNT(*) INTO cnt FROM dept;

END;

输入/输出参数是一个作为输入或输出参数或两者兼用的参数。输入/输出参数的值被传递到存储过程/函数中,可以为该参数分配一个新值并从模块中传递出去。输入/输出参数必须是变量,而不是常量。但是,它可以在任务的两边找到。换句话说,一个IN/OUT参数的行为就像一个初始化的变量。

除了标量变量之外,存储过程还可以返回结果集,即SELECT语句的结果。在Oracle中,光标变量用于这种情况。光标可以解释为对结果集的引用。下面的示例演示如何将最简单的SELECT语句包装在存储过程中:

1

2

3

4

CREATE PROCEDURE get_all_depts_proc (cur OUT SYS_REFCURSOR) AS

BEGIN

  OPEN cur FOR SELECT FROM dept;

END;

相同的SELECT语句可以通过存储函数使用,如下所示:

1

2

3

4

5

6

7

CREATE OR REPLACE FUNCTION get_all_depts_func RETURN SYS_REFCURSOR

AS

  cur SYS_REFCURSOR;

BEGIN

  OPEN cur FOR SELECT FROM dept;

  RETURN cur;

END;

这里,光标作为返回值传递,而不是作为输出参数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值