数据库

位置:IT落伍者 >> 数据库 >> 浏览文章

ADO.NET访问Oracle 9i存储过程(上)[6]


发布日期:2020年03月26日
 
ADO.NET访问Oracle 9i存储过程(上)[6]

控制台输出显示了员工 的电子邮件地址

Email address is: NKOCHHAR

结果集与 REF CURSOR

可使用 REF CURSOR 数据类型来处理 Oracle 结果集REF CURSOR 是一个指向 PL/SQL 查询所返回的结果集的指针与普通的游标不同REF CURSOR 是一个变量它是对游标的引用可以在执行时将其设置为指向不同的结果集使用 REF CURSOR 输出参数可以将 Oracle 结构化程序的结果集传递回调用应用程序通过在调用应用程序中定义 OracleTypeCursor 数据类型的输出参数可以访问 REF CURSOR 所指向的结果集在使用 REF CURSOR 的过程中OracleConnection 必须保持打开状态

PL/SQL 和 TSQL 中的存储过程之间的一个重大差异是 PL/SQL 所使用的 Oracle 包 结构在 TSQL 中没有等效元素包是在逻辑上相关的编程块(如存储过程和函数)的容器它包含两个部分

· 规范定义包的名称并为包中的每个存储过程或函数提供方法签名(原型)规范头还定义所有全局声明规范的样式类似于 C 或 C++头文件

· 正文包含包头中定义的存储过程和函数的代码

每个存储过程或函数的参数都出现在括号内并且用逗号分隔每个参数还根据需要用以下三个标识符中的一个进行标记

· IN该值从调用应用程序传递到 PL/SQL 块如果未指定标识符则 IN 为默认传递方向

· OUT该值由存储过程生成并传递回调用应用程序

· INOUT该值被传递到 PL/SQL 块可能在该块内部进行修改然后返回到调用应用程序

每个参数也都被标记以指示数据类型

以下包规范定义了四个过程它们在 HR 架构的 LOCATIONS 表中创建检索更新和删除数据

CREATE OR new PACKAGE CRUD_LOCATIONS AS

TYPE T_CURSOR IS REF CURSOR;

PROCEDURE GetLocations (cur_Locations OUT T_CURSOR);

PROCEDURE UpdateLocations (p_location_id IN NUMBER

p_street_address IN VARCHAR

p_postal_code IN VARCHAR

p_city IN VARCHAR

p_state_province IN VARCHAR

p_country_id IN CHAR);

PROCEDURE DeleteLocations (p_location_id IN NUMBER);

PROCEDURE InsertLocations (p_location_id OUT NUMBER

p_street_address IN VARCHAR

p_postal_code IN VARCHAR

p_city IN VARCHAR

p_state_province IN VARCHAR

p_country_id IN CHAR);

END CRUD_LOCATIONS;

[] [] [] [] [] [] [] []

               

上一篇:ADO.NET访问Oracle 9i存储过程(上)[5]

下一篇:ADO.NET访问Oracle 9i存储过程(上)[7]