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關聯即可。
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;
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關聯即可。
---------- --------
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;