我有个值要插入一张表,比如表结构很简单:id number(10),name nclob
现在有个name的值长度很长,会达到上万的长度,如果直接写普通的SQL:insert into tab_user values(1,'......');
执行的时候,oracle会报:ORA-01704: string literal too long 的错误。
请问各位高手,这个SQL怎么写才能正常入进表里呢?请指教下,本人很菜鸟。
现在有个name的值长度很长,会达到上万的长度,如果直接写普通的SQL:insert into tab_user values(1,'......');
执行的时候,oracle会报:ORA-01704: string literal too long 的错误。
请问各位高手,这个SQL怎么写才能正常入进表里呢?请指教下,本人很菜鸟。
解决方案 »
- 如何通过一级项目的名字,删除一级项目和他的二三级子项目..
- 用Net8 Configuration Assistant配置监听程序时的提示。
- oracle有几个文件特别大,请问是什么文件,如何解决?
- SELECT * from BOOK.LIST 与 select * from list 有什么区别啊? 急!
- 安装ORACLE的服务器,是否可以杀掉联接了服务器但是长时间没有做操作的客户端?
- 关于VIEW的限制条件的问题,非常奇怪的问题
- 修改参数后的问题
- Oracle8i在Red Hat9上的安装问题?
- 请教高手:实现一个从3300万记录中汇总排序查询,需把sort_area_size设置为多大合适?能否超过shared_pool_size?这有什么规定?(急!!
- 怎么将Oracle的客户端安装过程写到自己开发程序的安装过程中?
- 如何使用ADO.net连接oracle 10g express?
- 跪求高人解答!
--处理方法一:用EXECUTE IMMEDIATE 实现--ASQL:带参数的INSERT INTO 语句
--ALongVar1 : 参数值,大于4000字节
CREATE OR REPLACE PROCEDURE EXEC_SQL1(ASQL varchar2, ALongVar1 clob)
AS
BEGIN
EXECUTE IMMEDIATE ASQL USING ALongValue;
END EXEC_SQL1;
--处理方法二:用Dbms_sql接口实现--ASQL:带参数的INSERT INTO 语句
--ALongVar1 : 参数值,大于4000字节
CREATE OR REPLACE PROCEDURE EXEC_SQL(ASQL clob, ALongValue clob)
AS
The_c1 Integer;
The_result Integer;--dml_sql_result
BEGIN
The_C1 :=Dbms_sql.open_cursor;
Dbms_sql.parse(the_C1, ASQL, DBMS_SQL.NATIVE);
DBMS_SQL.BIND_VARIABLE
(The_c1, ':LongValue', ALongValue);
The_result:=Dbms_sql.execute(The_c1);
Dbms_sql.close_cursor(The_C1);
END EXEC_SQL;
AS
BEGIN
EXECUTE IMMEDIATE ASQL USING ALongValue;
END EXEC_SQL1;
你在java里拼接好,然后insert语句写出这样insert into tab_user values(1,'&var');
拼接好要插入的字符 在把这里个作为参数传到过程里
另外你可以考虑分段执行adoquerysql.add()好像可以分段
还是用jdbc写text读写吧。asciistream, 网上有很多例子。