Oracle 侧:CREATE PACKAGE MYPKG IS TYPE CursorType IS REF CURSOR; END MyPkg;CREATE PROCEDURE RETURN_RESULT_SET (InID IN Varchar2, ResultSetCursor IN OUT MyPkg.CursorType) AS BEGIN open oCursor for select id,date,name from db where id = InID; END;Delphi侧: TStoredProc.DataType := ftCursor; TStoredProc.Open; while not TStoredProc.Eof do begin {do something} TStoredProc.Next; end;
Oracle 侧: CREATE PACKAGE TestPKG IS TYPE CursorType IS REF CURSOR; END TestPKG;CREATE PROCEDURE Proc_GetDataSet (InID IN Varchar2, ResultSetCursor IN OUT TestPKG.CursorType) AS BEGIN open ResultSetCursor for select id,name from db where id = InID; END;Delphi侧: procedure TForm1.Button1Click(Sender: TObject); begin with StoredProc1 do begin if Active then Close; StoredProcName := 'PROC_GETDATASET'; ParamByName('INID').Value := 1; ParamByName('ResultSetCursor').DataType := ftCursor; Prepare; Open; end; end;
IS
TYPE CursorType IS REF CURSOR;
END MyPkg;CREATE PROCEDURE RETURN_RESULT_SET
(InID IN Varchar2, ResultSetCursor IN OUT MyPkg.CursorType) AS
BEGIN
open oCursor for select id,date,name from db where id = InID;
END;Delphi侧:
TStoredProc.DataType := ftCursor;
TStoredProc.Open;
while not TStoredProc.Eof do
begin
{do something}
TStoredProc.Next;
end;
CREATE PACKAGE TestPKG
IS
TYPE CursorType IS REF CURSOR;
END TestPKG;CREATE PROCEDURE Proc_GetDataSet
(InID IN Varchar2, ResultSetCursor IN OUT TestPKG.CursorType) AS
BEGIN
open ResultSetCursor for select id,name from db where id = InID;
END;Delphi侧:
procedure TForm1.Button1Click(Sender: TObject);
begin
with StoredProc1 do
begin
if Active then Close;
StoredProcName := 'PROC_GETDATASET';
ParamByName('INID').Value := 1;
ParamByName('ResultSetCursor').DataType := ftCursor;
Prepare;
Open;
end;
end;
编号: 2 发送者 wzd801027 发送时间 2002-4-27 8:17:41 删除 回复
内容
----------------------------------------------------------------假如你的存储过程‘PROC1’有两个参数,一个是输入参数‘PAR1 VARCHAR2’,另一个是输入参数‘PAR2 IN OUT 游标类型’。则STOREDPROC1的参数为两个。第二个参数的类型默认为NONE,你一定要修改为CURSOR。同时,在调用STOREPROC1时,只需给第一个参数赋值即可,第二个参数不用赋值。
storeproce1.close;
storeproce1.params[0].value:=par1;
storeproce1.open;
同时,加入一个datasource1,dbgrid1.
datasource1.dataset:=storeproce1;
dbgrid1.datasource:=datasource1.
这样返回记录就显示在dbgrid1中了。别忘了给我加分呀!!!!!别忘了给我加分呀!!!!!别忘了给我加分呀!!!!!
编号: 1 发送者 wzd801027 发送时间 2002-4-27 8:17:04 删除 回复
内容
----------------------------------------------------------------假如你的存储过程‘PROC1’有两个参数,一个是输入参数‘PAR1 VARCHAR2’,另一个是输入参数‘PAR2 IN OUT 游标类型’。则STOREDPROC1的参数为两个。第二个参数的类型默认为NONE,你一定要修改为CURSOR。同时,在调用STOREPROC1时,只需给第一个参数赋值即可,第二个参数不用赋值。
storeproce1.close;
storeproce1.params[0].value:=par1;
storeproce1.open;
同时,加入一个datasource1,dbgrid1.
datasource1.dataset:=storeproce1;
dbgrid1.datasource:=datasource1.
这样返回记录就显示在dbgrid1中了。别忘了给我加分呀!!!!!别忘了给我加分呀!!!!!别忘了给我加分呀!!!!!