我们的旧版C ++ ODBC应用程序最近添加了对XML数据列的支持(MS SQL Server中的数据类型xml,Oracle中的XmlType)。我们用过
SQLBindParameter( hStmt, i, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_VARCHAR, ... )
用于我们的插入/更新查询,以及
SQLBindCol( hStmt, i, SQL_C_CHAR, ... )
我们的选择。虽然XML数据仍然很小,但这在DBMS上都运行良好。 MS SQL Server也可以毫无问题地处理更大的XML数据,但在Oracle上我们遇到了字符串文字的4K限制。
我们意识到我们可以在Oracle中使用CLOB列(在MS SQL上使用varchar(max))来存储与SQL_LONGVARCHAR绑定的更大的XML数据。但是,我们只能在下一个主要版本中更改数据库架构。
有没有办法让Oracle通过ODBC处理4K字符数据,同时将列保持为XmlType?
我在PL / SQL中发现了各种变通方法,但没有任何适用于ODBC的方法。尝试使用将参数中的CLOB作为帮助程序的PL / SQL存储过程仅导致相同的
ORA-01461: can bind a LONG value only for insert into a LONG column
我们在直接尝试绑定列时也会收到错误消息。