环境: win2000 + oracle92
一、先在 oracle 建包
create or replace package pkg_test
as
type myrctype is ref cursor;
procedure get(i_test integer,p_rc out myrctype);
end pkg_test;
create or replace package body pkg_test
as
procedure get(i_test integer,p_rc out myrctype) is
begin
if i_test = 0 then
open p_rc for select sysdate from dual;
else
open p_rc for select * from tab;
end if;
end get;
end pkg_test;
二、用 delphi 调用
建一个窗体,拖动控件 adoconnection1 , adostoredproc1 和 button1.
procedure tform1.button1click(sender: tobject);
begin
try
with adoconnection1 do
begin
connectionstring:=
provider=oraoledb.oracle.1;
+ password=密码;
+ persist security info=true;
+ user id=用户名;
+ data source=数据库名;
+ extended properties=”plsqlrset=1;”;
open;
end;
except
showmessage(连接不成功);
exit;
end;
try
with adostoredproc1 do
begin
connection := adoconnection1;
parameters.clear;
procedurename:= pkg_test.get;
parameters.createparameter(p1,ftinteger,pdinput,10,1);
open;
end;
except
showmessage(无法执行过程.);
end;
end;