oracle中在SCHEMA中自己建一个function,我的要求是,传入一个参数,返回一个记录集,用DELPHI调用?

yuefengzzh 2002-04-24 06:48:08
自己建一个function,我的要求是,传入一个参数,返回一个记录集,用DELPHI调用。
oracle中在SCHEMA中的function中建个函数,传入一个varchar类型的参数,查询表
select id,date,name from db where id=传入的参数
然后在DELPHI中调用这个函数。
这个FUNCTION,怎么写?
在DELPHI中,如何调用?
写成过程是否可以呀,是不是过程不能返回记录集呢?
...全文
239 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
yuefengzzh 2002-04-28
  • 打赏
  • 举报
回复
拿出来大家看看,有帮助的话,给我消息!
yuefengzzh 2002-04-28
  • 打赏
  • 举报
回复
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;

编号: 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中了。

别忘了给我加分呀!!!!!

别忘了给我加分呀!!!!!

别忘了给我加分呀!!!!!
nebulaly 2002-04-25
  • 打赏
  • 举报
回复
http://www.csdn.net/expert/topic/653/653205.xml?temp=.9530908
softwing 2002-04-25
  • 打赏
  • 举报
回复
oracle的store procedure 不支持返回一个记录集,并且不支持临时表,只可以返回一个游标,返回后自己处理。
Borlandor 2002-04-25
  • 打赏
  • 举报
回复
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;


yuefengzzh 2002-04-25
  • 打赏
  • 举报
回复
我用的是DBE连接ORCLE。
具体是给个写过程的例子,以及如何在DELPHI调用

5,391

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧