语句如下
UPDATE STDCMP_REC SET ENGLISH = 'Cold & Cool School (TCM)' WHERE ID = 8260;
用sqlplus执行,提示enter value for cool,我按回车,然后这个字段最后再我查询的时候就成了Cold School (TCM),显然把& Cool当作一个变量了,这个问题是怎么回事??

解决方案 »

  1.   

    & 在sqlplus 中有特殊作用!UPDATE STDCMP_REC SET ENGLISH = 'Cold ' || '&' || ' Cool School (TCM)' WHERE ID = 8260;
      

  2.   

    http://blog.csdn.net/wh62592855/archive/2010/03/07/5354681.aspx看看上面的文章把你的那个语句改为如下的语句
    UPDATE STDCMP_REC SET ENGLISH = 'Cold \& Cool School (TCM)' WHERE ID = 8260;使用转义字符\来将字符&转义 从而不把Cool作为变量处理前提是在SQL*PLUS中输入set escape on打开转义字符
      

  3.   

    &为变量前缀,在sql里属于特殊字符,需要转义。
    SQL> create table test (id number,name varchar2(64));表已创建。SQL> insert into test values (8260,'');已创建 1 行。SQL> commit;提交完成。SQL> select * from test;        ID NAME
    ---------- ----------------------------------------------------------------
          8260SQL> update test set name='Cold '||'&'||'Cool School (TCM)' WHERE ID = 8260;已更新 1 行。SQL> commit;提交完成。SQL> select * from test;        ID NAME
    ---------- ----------------------------------------------------------------
          8260 Cold &Cool School (TCM)SQL>
      

  4.   

    或者chr(38)SQL> insert into test values (1,'AC米兰');已创建 1 行。SQL> commit;提交完成。SQL> select * from test
      2  ;        ID NAME
    ---------- ----------------------------------------------------------------
          8260 Cold &Cool School (TCM)
             1 AC米兰SQL> update test set name='Cold '||chr(38)||'Cool School (TCM)' WHERE ID =1;已更新 1 行。SQL> commit;提交完成。SQL> select * from test;        ID NAME
    ---------- ----------------------------------------------------------------
          8260 Cold &Cool School (TCM)
             1 Cold &Cool School (TCM)SQL>
      

  5.   

    谢谢各位大虾!
    还有请问,oracle里执行几万行这个数量的sql语句时如何查看执行结果啊~
    我是个oracle菜鸟,吼吼
      

  6.   

    将执行过程的输出保存到日志文件。spool c:\dml.log
    sql1
    sql2
    .....spool off然后检查日志文件,是否有错误信息。
    或者,如果执行期间,未提示任何错误,则说明执行成功。