Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
IBM DB2 LUW BOOLEAN和CLI SQLBindParameter for NULL_Db2_Boolean_Odbc_Db2 Luw_Sqlbindparameter - Fatal编程技术网

IBM DB2 LUW BOOLEAN和CLI SQLBindParameter for NULL

IBM DB2 LUW BOOLEAN和CLI SQLBindParameter for NULL,db2,boolean,odbc,db2-luw,sqlbindparameter,Db2,Boolean,Odbc,Db2 Luw,Sqlbindparameter,IBMDB2LUW11.1.1.1引入了布尔SQL数据类型 使用IBM CLI,我希望通过使用SQLBindParameter()函数将SQL参数传递为NULL,以便在具有布尔列的表中插入行 我使用的ODBC调用、标志和缓冲区与MS ODBC SQL Server和SAP HANA ODBC相同 当使用非空值时,我可以在布尔列中插入TRUE/FALSE 在绑定时,将TRUE/FALSE值插入我的布尔列可以正常工作: 1/0,带SQL\u C\u SHORT+SQL\u SMALLINT 或:

IBMDB2LUW11.1.1.1引入了布尔SQL数据类型

使用IBM CLI,我希望通过使用SQLBindParameter()函数将SQL参数传递为NULL,以便在具有布尔列的表中插入行

我使用的ODBC调用、标志和缓冲区与MS ODBC SQL Server和SAP HANA ODBC相同

当使用非空值时,我可以在布尔列中插入TRUE/FALSE

在绑定时,将TRUE/FALSE值插入我的布尔列可以正常工作:

  • 1/0,带SQL\u C\u SHORT+SQL\u SMALLINT
或:

  • 带有SQL\u C\u字符+SQL\u字符的“1”/“0”
但是,当将StrLen_或_IndPtr指示符设置为SQL_NULL_数据时,我在语句执行时遇到以下错误:

[IBM][CLI驱动程序]CLI0164E可空类型超出范围。SQLSTATE=HY099

我不明白为什么

有线索吗

下面是一些SQL语句,用于说明DB2的布尔类型用法:

db2 => create table t1 ( pk int, bl boolean ) 
DB20000I  The SQL command completed successfully.
db2 => insert into t1 values ( 101, TRUE )
DB20000I  The SQL command completed successfully.
db2 => insert into t1 values ( 102, FALSE )
DB20000I  The SQL command completed successfully.
db2 => insert into t1 values ( 103, NULL )
DB20000I  The SQL command completed successfully.
db2 => select * from t1 where bl IS NULL
PK          BL
----------- --
        103 -
   1 record(s) selected.
db2 => select * from t1 where bl
PK          BL
----------- --
        101  1
  1 record(s) selected.
db2 => select * from t1 where bl is true
PK          BL
----------- --
        101  1
  1 record(s) selected.
db2 => select * from t1 where bl is false
PK          BL
----------- --
        102  0
  1 record(s) selected.
谢谢!
Seb

我们安装了11.5.0.0客户端和服务器

我可以用一个简单的CLI程序进行复制

它似乎与延迟准备对账单选项有关

我在使用SQL\u DEFERRED\u PREPARE\u OFF时出现CLI0164E错误:

rcode=sqlsetstmtr(m_hstmt,SQL_ATTR_DEFERRED_PREPARE, (SQLPOINTER)SQL\u延迟\u准备\u关闭,0)

不使用此选项时,将执行INSERT并可以插入NULL

很奇怪

是的,这看起来像是一个DB2客户端错误


我们将在IBM打开一个支持案例。

IBM支持部门回答说,该错误是已知的,并且已在APAR IT30675中修复
问题已解决。

布尔值不能为空。足够简单。danny117,如果不指定NOTNULL约束,SQL中的布尔列可以为NULL。我用一些SQL更新了问题文本来说明这一点。Like INTEGER可以为NULL。这是在Debian9上用IBMDB2LUW11.5测试的。