存储过程如何返回数据集啊

lf43 2003-08-18 05:28:01
请问ORACLE存储过程如何返回数据集(select * from talbe数据全面返回),我要它在DELPHI里用DBGRID显示怎么做?谢谢
...全文
53 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
beckhambobo 2003-08-18
  • 打赏
  • 举报
回复
SQL> select * from aa;

ID NAME
---------- --------
1 猪八戒
2 孙悟空


CREATE OR REPLACE PACKAGE pkg_test
AS
TYPE myrctype IS REF CURSOR;
END pkg_test;
/

create or replace PROCEDURE get(p_rc OUT pkg_test.myrctype)
IS
sqlstr VARCHAR2 (50);
BEGIN
sqlstr:='select * from aa';
OPEN p_rc FOR sqlstr;
END get;
/
在delphi中:
with ADOStoredProc1 do
begin
Close;
procedurename:='get';
Parameters.CreateParameter('p_id',ftstring,Pdinput,20,'1');
parameters[0].Name:='p_id';
Parameters[0].Value:='3';
execproc;
Open;
end;
jiezhi 2003-08-18
  • 打赏
  • 举报
回复
create or replace package pkg_test
as
type cur_test is ref cursor; -- 定義一個cursor的type
end pkg_test;
/
create or replace procedure p_test
(
v_cur out pkg_test.cur_test
)
as
v_sql varchar2(100); --
begin
v_sql := 'select a1,a2 from test';
OPEN v_cur FOR v_sql; --
exception
when others then
DBMS_OUTPUT.PUT_LINE('Error ---------------' || sqlcode || ' : ' || sqlerrm );
end p_test;
/
然后在delphi里面:
query.sql.clear;
query.sql.add('select * from pkg_test.p_test()');
query.open;
將datagrid的數據源和該query關聯即可。

3,491

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧