彩票走势图

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

翻译|使用教程|编辑:李爽夏|2019-01-23 13:17:02.000|阅读 209 次

概述:本教程说明了有关存储过程使用的总体方面的信息。

# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>

相关链接:

【下载dotConnect for Oracle最新版本】

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

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

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

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

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

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

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

CREATE PROCEDURE dept_insert (pDeptno INTEGER, pDname VARCHAR, pLoc VARCHAR) AS
BEGIN
  INSERT INTO dept(deptno, dname, loc) VALUES (pDeptno, pDname, pLoc);
END;

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

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

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

CREATE PROCEDURE dept_count (cnt OUT INTEGER)
AS
BEGIN
  SELECT COUNT(*) INTO cnt FROM dept;
END;

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

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

CREATE PROCEDURE get_all_depts_proc (cur OUT SYS_REFCURSOR) AS
BEGIN
  OPEN cur FOR SELECT * FROM dept;
END;

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

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;

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

购买dotConnect for Oracle正版授权的朋友可以点击""哦~~~
PyCharm

标签:数据库SQL服务器oracle

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@pclwef.cn


为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP