我正在执行一个SQL脚本,该脚本在名为prod_desc的列中包含空格,分号,单引号,特殊字符等。 我需要从SQLPLUS执行脚本。我在SQLPLUS中设置了以下内容,但是单引号,分号没有被考虑在内。
set sqlblanklines on
例如,请参阅下面的insert语句,分号是在换行符之后。这在执行期间导致错误。我该如何解决这个问题?
SET DEFINE OFF;
Insert into PROD_DESC
(PROD_NO, PROD_DESC
)
Values
('XYZ', 'test
semicolon test;
'
);
表格结构
CREATE TABLE prod_desc
(
prod_no VARCHAR2 (100),
prod_desc VARCHAR2 (1000)
);
答案 0 :(得分:2)
Espace the decmeon:
SET DEF OFF;
Insert into PROD_DESC(PROD_NO, PROD_DESC)
Values('XYZ', 'test semicolon test\;');
答案 1 :(得分:1)
我也喜欢使用q-quote语法。它消除了转义的需要,并使引用引号更容易。
语法是
q'[ <your string> ]'
<Your string>
可以包含通常需要转义的引号或任何其他字符。 [实际上可以替换或“配对”字符,例如{}或()。
例如:
SQL>
SQL> CREATE TABLE prod_desc
2 (
3 prod_no VARCHAR2 (10),
4 prod_desc VARCHAR2 (100)
5 );
Table created.
SQL>
SQL> SET DEFINE OFF;
SQL> Insert into PROD_DESC
2 (PROD_NO, PROD_DESC
3 )
4 Values
5 ('XYZ', q'[test
6 semicolon test
7 ; ]'
8 );
1 row created.
SQL>
SQL>
SQL> select * from prod_desc;
PROD_NO PROD_DESC
---------- ----------------------------------------------------------------------------------------------------
XYZ test
semicolon test
;