PROC一个很奇怪的问题。

cr4315 2013-08-05 03:16:18
以下是查询语句:
EXEC SQL DECLARE cur CURSOR FOR (
SELECT ZSLXZ,ZSDMZ,ZSBBZ,ZSXXZ FROM CSZSXXZZ WHERE ZSZTZ = '01' ORDER BY ZSDMZ
);
提取语句:
EXEC SQL FETCH cur INTO :dbcerttype,:dbcertcode,:dbcentercertver,:dbcert;
其中的dbcerttype,dbcertcode,dbcentercertver,dbcert均在宿主变量中声明。
程序在运行的时候,捕获到的错误有时出现:ORA-01002,有时出现ORA-01007,有时有正确。
请问这个是什么情况。在表中的列类型分别为ZSLXZ,ZSDMZ,ZSBBZ为char,ZSXXZ 为varchar2,char类型的长度与变量的有效长度一样。(有效长度不包括'\0')
怎么会出现不一样的错误信息?而且程序运行的数据库的服务器上,不存在版本问题。用的数据库版本为Release 10.2.0.1.0


请假各位大侠,这是什么情况。小弟实在找不出什么问题来。
...全文
423 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Thornger 2014-09-28
  • 打赏
  • 举报
回复
char(*),*代表一个数值,在oracle中,如果你插入的数值小于*这个数值的话,就会默认用空格给你填充满。所以当你查询的时候,用where表达式或者其他的表达式,不能正确的匹配。如果你填充的字符正好等于*的话就会出现正确的结果,否则的话,就会出现错误的结果、
forgetsam 2013-08-05
  • 打赏
  • 举报
回复
你的那两个错要么是超时要么是断网。
aio_o 2013-08-05
  • 打赏
  • 举报
回复
fetch过头了吧,都没行了...

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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