WEB开发网
开发学院数据库Oracle 使用ADO.NET访问Oracle 9i存储过程(上) 阅读

使用ADO.NET访问Oracle 9i存储过程(上)

 2007-05-13 12:30:07 来源:WEB开发网   
核心提示: Email address is: NKOCHHAR结果集与 REF CURSOR可使用 REF CURSOR 数据类型来处理 Oracle 结果集,REF CURSOR 是一个指向 PL/SQL 查询所返回的结果集的指针,使用ADO.NET访问Oracle 9i存储过程(上)(7),与普

Email address is: NKOCHHAR

结果集与 REF CURSOR

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

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

• 规范:定义包的名称,并为包中的每个存储过程或函数提供方法签名(原型)。规范头还定义所有全局声明。规范的样式类似于 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 VARCHAR2,
   p_postal_code IN VARCHAR2,
   p_city IN VARCHAR2,
   p_state_province IN VARCHAR2,
   p_country_id IN CHAR);
PROCEDURE DeleteLocations (p_location_id IN NUMBER);
PROCEDURE InsertLocations (p_location_id OUT NUMBER,
   p_street_address IN VARCHAR2,
   p_postal_code IN VARCHAR2,
   p_city IN VARCHAR2,
   p_state_province IN VARCHAR2,
   p_country_id IN CHAR);
END CRUD_LOCATIONS;

以下代码摘自上述包规范的包正文,说明了 GetLocations 包中的第一个过程的实现细节:

上一页  2 3 4 5 6 7 8  下一页

Tags:使用 ADO NET

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接