在Oracle下建立一个存储过程,但在Delphi下TADOStoredProc就是调不出那个返回的结果集

yellowzhong 2003-12-22 06:21:05
已知建立了一个存储过程
create or replace procedure test_data_hzy1
(
io_cur in out C112_DT.CurTyp
)
as
begin
open io_cur for
select c1,c2 from test_hzy;
end;

但是在Delphi6中,我建立了一个TADOStoredProc的对象,建立时他自动在Parameter中添加了Io_cur这个参数(DataType为ftInterface,Direction为pdInputOutput),但是
当我将Active设为true的时候,报这样的错:

ORA-06550:第1行,第7列:
PLS-00306:调用‘TEST_DATA_HZY'时参数数量或类型错误
ORA-06550:第1行,第7列:
PL/SQL: Statemet ignored.

请问各位高手,该如何让他不报错,正确的调出结果集来
...全文
105 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
yellowzhong 2004-01-09
  • 打赏
  • 举报
回复
[楼主]:
问题已解决,要使用oracle的package,在pacakage中调用存储过程,最后在Delphi中调用那个包就可以了
yellowzhong 2003-12-24
  • 打赏
  • 举报
回复
但是是我的已有的那个存储过程已经是可以返回结果集的了,
如何在delphi中定义那个返回参数parameter的属性,
是否保持delphi倒出parameter时的默认属性就可以了?
yellowzhong 2003-12-23
  • 打赏
  • 举报
回复
【楼主】:
我想存储过程应该是没问题,弄清在delphi中如何调用才是关键。
IORILI 2003-12-23
  • 打赏
  • 举报
回复
参考:我写的一段
create or replace procedure AutoCreateReward as
RewardsCode varchar2(20);
fname varchar2(20);
fnameStr varchar2(2000);
begin
declare
cursor cur_person is
select ChineseName from hr_personnelarchives where leave_flag <> 1;
begin
fnameStr:='';

open cur_person;
fetch cur_person into fname;

while cur_person%found loop
fnameStr := fname ||','||fnameStr ;
fetch cur_person into fname;
end loop;

Close cur_person;
end;
oracle不熟悉
不知道{io_cur in out c112_dt.curtyp }什么意思
xiaocuo_zrf 2003-12-23
  • 打赏
  • 举报
回复
Oracle的存储过程默认不能像MSSQL那样返回数据集的
你如果需要要使用Oracle 的包,定义返回式游标,那样才可以将
存储过程的数据集返回,以前有帖子讨论过,在Oracle板块和Delphi板块都有
楼主可以搜索
delphipan 2003-12-23
  • 打赏
  • 举报
回复
yellowzhong 2003-12-23
  • 打赏
  • 举报
回复
up

2,495

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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