数据窗口调用ORACLE存储过程问题

picklock 2006-04-13 09:29:59
CREATE OR REPLACE PROCEDURE "DARKMOON"."LM_DT_ICD" (
P_CODE OUT DARKMOON.ZD_ICD_CODE.CODE%TYPE,
P_NAME OUT DARKMOON.ZD_ICD_CODE.NAME%TYPE,
P_PY_CODE OUT DARKMOON.ZD_ICD_CODE.PY_CODE%TYPE
) IS

BEGIN
SELECT NAME,CODE,PY_CODE INTO P_NAME,P_CODE,P_PY_CODE FROM DARKMOON.ZD_ICD_CODE;
END;

用以上存储过程时报:
Cannot create DataWindow.
'ORA-01422:实际返回的行数超出返回行数
ORA-06512:在"DARKMOON.LM_DT_ICD",line 8
ORA-06512:在line 1

1 execute DARKMOON.LM_DT_ICD;0 P_CODE = :P_CODE,P_NAME = :P_NAME,P_PY_CODE = :P_PY_CODE'

-----------------------------------------------------------------------------------------
CREATE OR REPLACE PROCEDURE "DARKMOON"."LM_DT_ICD" (P_CODE CHAR)
AS
CHRSQL CHAR(100);

BEGIN
CHRSQL := 'SELECT NAME,CODE,PY_CODE FROM DARKMOON.ZD_ICD_CODE';
EXECUTE IMMEDIATE CHRSQL;
END;

用以上存储过程时报:
Cannot create DataWindow.
'ORA-24333:零迭代计数
1 execute DARKMOON.LM_DT_ICD;0 P_CODE = :P_CODE'

以上两个存储过各都能通过ORACLE的编译,但不知道为什么在用DataWindow直接调用时出错,即将数据窗口数据源指向一个存储过程时出错。

有哪位高手能给于指点,看看到底是不是存储过程写得不对,本人不胜感激。
...全文
299 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
picklock 2006-04-24
  • 打赏
  • 举报
回复
多谢深水鱼的提点,能不能给个也还细的例子?
小弟也是初学,不好意思。
derris 2006-04-14
  • 打赏
  • 举报
回复
SELECT NAME,CODE,PY_CODE INTO P_NAME,P_CODE,P_PY_CODE FROM DARKMOON.ZD_ICD_CODE;
更改成一个游标,open他,不用赋变量,退出就行了,然后在创建数据窗口的时候选择,否则你拿什么做为多行记录的容器呢。
picklock 2006-04-14
  • 打赏
  • 举报
回复
不好意思,小弟就是想把数据库里的东东都拿出来。
我是要把它作为一个过滤用的字典,用存储过程是想以后遇到什么情况可以动态的用条件来限制它。
还有,一楼那位,用你的方法我在这之前就试过了,好像在ORACLE中就会报错,存储过程好像编译不过。
还有哪位大大有方法没
derris 2006-04-14
  • 打赏
  • 举报
回复
晕,oracle是加一个rowNum < 2就行了
derris 2006-04-14
  • 打赏
  • 举报
回复
CHRSQL := 'SELECT NAME,CODE,PY_CODE FROM DARKMOON.ZD_ICD_CODE'; 返回了多行,需要加一个top限制一下吧。
askyff 2006-04-14
  • 打赏
  • 举报
回复
1、SELECT INTO当返回多行时是不是会出错?
2,把它改成下面的样子试试,
CREATE OR REPLACE PROCEDURE "DARKMOON"."LM_DT_ICD" (P_CODE CHAR)
AS
BEGIN
SELECT NAME,CODE,PY_CODE FROM DARKMOON.ZD_ICD_CODE
END;

754

社区成员

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

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