我想在同一列的所有单元格中插入相同的长字符串,这是CLOB类型。
它说我应该使用“绑定变量”来做到这一点。所以我用Google搜索了这个:
variable xmlstuff CLOB;
exec :xmlstuff := '<?xml version="1.0"?> ... really long xml...';
UPDATE TABLE_NAME SET COLUMN_NAME = '&&xmlstuff';
现在仍然说
The string literal is longer than 4000 characters.
在这种情况下,绑定变量的正确用法是什么?
答案 0 :(得分:1)
如果您使用C#或Java编程 - 只需使用OracleCLOB对象,它将执行所有必要的步骤。
如果要在SQL或PL / SQL中使用CLOB,
你需要分配它,并在使用后释放它。
搜索DBMS_LOB信息。
关于4000字节限制 - 这是SQL中的varchar2限制。
绕过这个 - 你可以使用PL / SQL - 它限制你的varchar是32KB,这不是你可以在CLOB中保存的4GB,但这是“自动”创建CLOB的限制。
如果你的字符串超过32K - 你必须使用DBMS_LOB将数据加载到clog对象中,方法是使用clob对象上的append。
这是我发现的最快的链接:http://geekswithblogs.net/robertphyatt/archive/2010/03/24/write-read-and-update-oracle-clobs-with-plsql.aspx
我想快速回答,所以如果您在获取此信息后无法解决问题,请告诉我 - 我会尝试更好地解释。