SQL> create table test(
  2  test1 varchar2(10),
  3  test2 varchar2(10));Table created.SQL> insert into test(test1,test2) values('''hello''','"hello"');1 row created.SQL> select * from test;TEST1      TEST2
---------- ----------
'hello'    "hello"

解决方案 »

  1.   

    一般写法就是
    insert into table values('','','')...如果你是动态构造SQL, 有双引号不会出错,但是有单引号在字符串中会报错。解决方法:1。不使用动态构造SQL的方法,而是采用变量绑定的方式。2。事先将单引号替换为全角的单引号,这个方法不太好,等于改变了字符串的内容。
      

  2.   

    insert into table values('','','')
      

  3.   

    多谢,还有一个问题,是否用insert or update的sql语句对clob字段进行更新或插入时,不能超过4000个字符?就是说:table A(id number(11),memo clob);
    insert into a values(1,'dkdkdkdk');dkdkdk那段不能大于4000,否则会报ORA-01704: string literal too long错,是吗?
      

  4.   

    1.如果在命令行输入insert or update clob字段是不能大于4000字节的吧2.oracle是英文字符集
      

  5.   

    两种方法
    第一就是象一楼的写法。直接在values 写 '''hello''','"hello"'
    分别是加单引和双引。
    或者可以 ''||'1111'||'' 和 ''||'"1111"'||''
    前者可以说是简便的写法
    后者是共通的写法。比较容易理解。
      

  6.   

    Oracle中的CLOB变量最大存储量可以达到6G左右,我想可能是你用常量字符串的缘故,试着用变量代替一下,比如先用VARCHAR2变量,然后再把该变量插入表里的CLOB字段。
      

  7.   

    varchar2的变量也不能超过4000限制的吧?
      

  8.   

    ORACLE中的所有单引号和双引号必须成对出现
    所以把所有出现的一个单引号替换成两个单引号等。