gpt4 book ai didi

oracle - 将 int64 (SQL_BIGINT) 绑定(bind)为查询参数会导致在 Oracle 10g ODBC 中执行期间出错

转载 作者:行者123 更新时间:2023-12-01 13:09:23 25 4
gpt4 key购买 nike

我在 Oracle 10g 上使用 ODBC 3.0 插入表失败,我不知道为什么。数据库在 Windows Server 2003 上。客户端在 Windows XP 上。
table :

CREATE TABLE test ( 
testcol NUMBER(20,0) NULL );
ODBC 调用:
SQLAllocHandle(SQL_HANDLE_STMT) = SQL_SUCCESS
SQLPrepare(INSERT INTO test (testcol) VALUES (?);) = SQL_SUCCESS

SQLINTEGER nStrLen = 0;
__int64 nInt64 = 99;
SQLBindParameter(hStatement, 1, SQL_PARAM_INPUT,
SQL_C_SBIGINT, SQL_BIGINT, 20, 0, &nInt64, 0, &nStrLen) = SQL_SUCCESS

SQLExecute() = SQL_ERROR
SQLGetDiagRec(1) = SQL_NO_DATA
SQLBindParameter成功但随后 SQLExecute失败。没有诊断消息。
我不得不求助于将 int64 写入字符串并将其绑定(bind)为字符串。这是绑定(bind) int64 的唯一方法吗?

最佳答案

Appendix G.1 中的 Oracle 10g 管理指南说 Oracle 10g ODBC 驱动程序确实 不支持要么 SQL_C_SBIGINTSQL_C_UBIGINT .
和您一样,我们也发现在运行时 SQLExecute()失败。并调用SQLGetDiagRec()什么都不返回,而不是像 "Oracle 10g does not support SQL_C_SBIGINT" 这样的简单消息.呜呜……
无论如何,附录 G.1 并没有说明你如何 应该 绑定(bind)数据以发送到表中,其列定义为 NUMBER(20) .所以我们都必须猜测,并使用任何(未记录的)技术。如果附录 G.1 就“最佳”方式给出某种提示或建议,那就太好了。
如果将数字转换为字符串然后绑定(bind)对您有用,请坚持下去。

关于oracle - 将 int64 (SQL_BIGINT) 绑定(bind)为查询参数会导致在 Oracle 10g ODBC 中执行期间出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/338609/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com