环境: 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;
|