使用 C 程序执行代码时支持从 db2/大型机返回值的可能数据类型是啥
Posted
技术标签:
【中文标题】使用 C 程序执行代码时支持从 db2/大型机返回值的可能数据类型是啥【英文标题】:what would be possible data type to support return value from db2/mainframe when executing code using C program使用 C 程序执行代码时支持从 db2/大型机返回值的可能数据类型是什么 【发布时间】:2020-06-16 20:46:55 【问题描述】:在 DB2/大型机中生成的随机值:1111111111111111
COBOL 脚本中返回值的数据类型是十进制 (15)
在 c 程序中声明为 SQL_C_LONG 的数据类型
尝试在 linux 中执行 db2 SP 时 c 代码失败,出现以下错误:
SQLSTATE:22003 本机错误代码:4294867297 [IBM][CLI Driver] CLI0111E 数值超出范围。 SQLSTATE=22003
【问题讨论】:
问题不准确。存储过程是用 COBOL 还是 SQL 或其他语言编写的?存储过程参数的create procedure
定义是什么(与 COBOL 表示不同)。
这个问题是这个***.com/questions/62268434/…的副本(没有太多改进)
【参考方案1】:
它似乎因我查看的资源而异,但其中至少有两个将“长”定义为 2^31-1,即 2,147,483,647...明显小于 1,111,111,111,111,111。看来C“long long int”类型是2 ^ 63-1,它应该包含一大堆有相当大的喘息空间...... (https://www.geeksforgeeks.org/data-types-in-c/)
【讨论】:
【参考方案2】:没有 C 等效的小数数据类型,根据 IBM 的文档,您必须使用双精度数。
Supported Data Types in C and C++
【讨论】:
以上是关于使用 C 程序执行代码时支持从 db2/大型机返回值的可能数据类型是啥的主要内容,如果未能解决你的问题,请参考以下文章
C# - 在没有许可证的情况下连接到 DB2 z/os 大型机