求助,在nt环境下存储过程传递参数类型不符,呵呵,分数好商量。

apster 2003-08-21 09:04:52
我刚学在nt下运行存储过程,但编译后产生类型不符的问题,不知道什么原因,望兄弟们解决,问题我尽力写得简单些,如果有不详尽请提问,现在我在线

这是在Stored Procedure Builder定义存储过程的参数定义:

(out int)

这是存储过程返回参数程序段:
。。。
long l_inward_rtn;
。。。
inout_sqlda->sqlvar[3].sqltype=SQL_TYP_NINTEGER ;
inout_sqlda->sqlvar[3].sqllen=sizeof(l_inward_rtn);
*(inout_sqlda->sqlvar[3].sqlind)=0;
*(long *)(inout_sqlda->sqlvar[3].sqldata) = l_inward_rtn;
。。。

编译通过,但run存储过程时提示出错:
[IBM][CLI Driver][DB2/NT] SQL1113N The data type for sqlvar "1" in the output SQLDA was changed from "501" to "497". SQLSTATE=39502
DB2ADMIN.TESTPROC - Changes rolled back.
DB2ADMIN.TESTPROC - Done calling stored procedure.

--------附SQLDA SQL Types
INTEGER 496/497 SQL_TYP_INTEGER / SQL_TYP_NINTEGER
SMALLINT 500/501 SQL_TYP_SMALL / SQL_TYP_NSMALL
...全文
44 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
MasterJ 2003-08-29
  • 打赏
  • 举报
回复
在存储过程的头定义语句中的参数表声明应该需要声明参数名称吧,像这种试一下:
(out OUT_VALUE int);
在DB2对这个代码的错误定义应该是这样:

SQL1113N 将输出 SQLDA 中 sqlvar "<n>" 的数据类型从 "<类型1>" 更改为 "<类型2>"。
说明: 远程存储过程更改了输出 SQLDA 中第 n 个 sqlvar 的数据类型;n 是第一个不匹配的 sqlvar 的序号。
存储过程没有返回任何数据。
用户的响应: 校正远程存储过程,以便不更改输出 SQLDA 中的数据类型信息。
sqlcode: -1113
sqlstate: 39502
trickhelloall 2003-08-22
  • 打赏
  • 举报
回复
会不会是CODEPAGE的原因

5,889

社区成员

发帖
与我相关
我的任务
社区描述
IBM DB2 是美国IBM公司开发的一套关系型数据库管理系统,它主要的运行环境为UNIX(包括IBM自家的AIX)、Linux、IBM i(旧称OS/400)、z/OS,以及Windows服务器版本
社区管理员
  • DB2
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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