IBM DB2 LUW 11.1.1.1 引入了 BOOLEAN SQL 数据类型。
使用 IBM CLI,我想通过使用 SQLBindParameter() 函数将 SQL 参数作为 NULL 传递以在具有 BOOLEAN 列的表中插入一行。
我使用与 MS ODBC SQL Server 和 SAP HANA ODBC 相同的 ODBC 调用、标志和缓冲区。
使用非 NULL 值时,我可以在 BOOLEAN 列中插入 TRUE/FALSE。
绑定时将 TRUE/FALSE 值插入我的 BOOLEAN col 可以正常工作:
- 1/0 与 SQL_C_SHORT + SQL_SMALLINT
或者:
- '1'/'0' 与 SQL_C_CHAR + SQL_CHAR
但是在将 StrLen_or_IndPtr 指标设置为 SQL_NULL_DATA 时,我在语句执行时收到以下错误:
[IBM][CLI Driver] CLI0164E 可空类型超出范围。SQLSTATE=HY099
我不明白为什么...
有什么线索吗?
这里有一些 SQL 来说明 BOOLEAN 类型在 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.
谢谢!塞布