今天遇到一个问题,同事用动态sql生成的insert语句,其中含有&符号,在做insert时,这个&符号就被作为一个变量提示符了。如何解决这个问题?其实很简单:set define off
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
SQL> create table t (a varchar2(20)); Table created. SQL> insert into t values('aaa&bbb'); Enter value for bbb: . old 1: insert into t values('aaa&bbb') new 1: insert into t values('aaa.') 1 row created. SQL> rollback; Rollback complete. SQL> SQL>--we now set define to OFF,then insert data. SQL> set define off SQL> insert into t values('aaa&bbb'); 1 row created. SQL> select * from t; A -------------------- aaa&bbb SQL> |
我们发现set define off后,带&符号的数据已经插入。
一条评论
还有个方法就是
用’||chr(38)||’代替’&’