使用 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/大型机返回值的可能数据类型是啥的主要内容,如果未能解决你的问题,请参考以下文章

DB2 数据库的安装配置及监控

从外部 UDF 调用 db2ReadLog

异步选择 db2

C# - 在没有许可证的情况下连接到 DB2 z/os 大型机

Oracle GoldenGate 对IBM大型机 z/OS 2.1 和DB2 v11的支持

DB2 - C 嵌入式 SQL 不会插入一行