CREATE OR REPLACE PACKAGE p_lee01 IS TYPE cur_lee01 IS REF CURSOR; END;
CREATE OR REPLACE PROCEDURE pro_lee01(in_a IN NUMBER,out_01 OUT NUMBER,cur_01 OUT p_lee01.cur_lee01) IS BEGIN out_01 := 3; OPEN cur_01 FOR SELECT * FROM TLEE01; dbms_output.put_line(IN_a);
END;
-- Create table create table TLEE01 ( ID NUMBER, FNAME VARCHAR2(10) )
---------------------------------- ODAC 两种调用方式
procedure TForm1.Button15Click(Sender: TObject); begin orastoredproc1.Params.clear; OraStoredProc1.StoredProcName := 'pro_lee01'; orastoredproc1.PrepareSQL; orastoredproc1.ParamByName('in_a').Value := 5; orastoredproc1.prepare; OraStoredProc1.ExecProc; showmessage(OraStoredProc1.ParamByName('out_01').AsString); ShowValue(OraStoredProc1, Button8.Caption); end;
procedure TForm1.Button9Click(Sender: TObject); var s: string; begin s := 'begin pro_lee01(:a,:b,:cur_01 ); end;'; OraQuery1.SQL.Clear; OraQuery1.SQL.Add(s); OraQuery1.AutoCommit := false; OraQuery1.FetchAll := true; OraQuery1.ParamByName('a').value := 4; OraQuery1.ParamByName('b').ParamType := ptoutput; OraQuery1.ParamByName('b').DataType:= ftinteger;
OraQuery1.ParamByName('cur_01').ParamType := ptoutput; OraQuery1.ParamByName('cur_01').DataType:= ftcursor; OraQuery1.Open;
showmessage(OraQuery1.ParamByName('b').AsString); //显示返回值 ShowValue(OraQuery1, Button8.Caption); end;
|
请发表评论