方法是使用存贮过程。此存贮过程必须以游标作为第一个参数。后面可以跟上其它参数。此游标须是 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! 但相信早期版本理论上也一定适用! ;-)
下面是简短的举例代码:
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! 但相信早期版本理论上也一定适用! ;-)
解决方案 »
- sql语句select sysdate from dual获取当前时间,用to_char转换格式后,结果不一致
- 逻辑较复杂的查询问题求高手相助!
- 为什么oracle 主页进入不了,plsql没有监听程序,我前两天刚重装的。
- 请教一个根据另外一个表改变本表字段值的问题
- 如何在linux上用命令启动“managerservice”服务?
- 诚求用一条SELECT 语句解决个问题?
- 请教:
- OCI问题
- 有谁知道以下错误是怎么产生的:ORA-12571: TNS:packet writer failure(包写入程序失败)
- 求教
- 如何指定一个回滚段?
- 问一个傻傻的问题,能够在一台机器上同时安装SQLSERVER2K和ORACLE9i吗?
AS
TYPE myrctype IS REF CURSOR; PROCEDURE get (p_id NUMBER, p_rc OUT myrctype);
END pkg_test;
/CREATE OR REPLACE PACKAGE BODY pkg_test
AS
PROCEDURE get (p_id NUMBER, p_rc OUT myrctype)
IS
sqlstr VARCHAR2 (500);
BEGIN
IF p_id = 0 THEN
OPEN p_rc FOR
SELECT ID, NAME, sex, address, postcode, birthday
FROM student;
ELSE
sqlstr :=
'select id,name,sex,address,postcode,birthday
from student where id=:w_id';
OPEN p_rc FOR sqlstr USING p_id;
END IF;
END get;
END pkg_test;
/也可以根据不同输入参数来输出记录集.