在oracle的存储过程中怎样返回游标(请指教)(50分)

  • 主题发起人 meiguibao
  • 开始时间
M

meiguibao

Unregistered / Unconfirmed
GUEST, unregistred user!
如:
我想在oracle的存储过程中返回 select * from table1 中的所有记录.
谢谢各位大侠的指教!!!!!!!!!
 
可以返回,先要建立一个PACKAGE,具体内容要回到公司看看才行
 
可以用视图
 
问题提出/摘要:
在使用报表构件的时候常需要结果集作为数据源。通过研究,我发现了一种从 Oracle 中返回结果集给 Delphi 的 Dataset 的简便方法。


回答:
方法是使用存贮过程。此存贮过程必须以游标作为第一个参数。后面可以跟上其它参数。此游标须是 IN/OUT 型的。你可以使用一个通用游标类型,并将此类型定义在一个 package 中。
下面是简短的举例代码:

CREATE package Test_Package
as
type Test_Type is ref cursor;
end;

CREATE PROCEDURE Test_Procedure (
Test_Cursor IN OUT Test_Package.Test_Type)
AS
BEGIN
OPEN Test_Cursor FOR
SELECT *
FROM Test_Table
END Test_Procedure;

在 Delphi 中,你需要正确设置好在存贮过程中定好的参数,一个技巧就是将游标参数在对象检视器中设置为 ftCursor,

现在将一个 Datasource 与存贮过程构件相联,激活该构件,一切就大功告成了。!

PS: 我使用 Oracle 8.1.6! 但相信早期版本理论上也一定适用! ;-)




 
declare cursor MyCursor As
select * from table_name;
begin
Open MyCursor;
fetch MyCursor into XX,TT, ZZ,;
close MyCursor;
end;
 
多人接受答案了。
 
顶部