Estoy ejecutando un script SQL que tiene espacios, punto y coma, comillas simples, caracteres especiales, etc. en la columna llamada prod_desc. Necesito ejecutar el script desde SQLPLUS. Tengo el conjunto de lo siguiente en SQLPLUS, sin embargo, las comillas simples, los puntos y comas no se tienen en cuenta.

set sqlblanklines on

Vea la siguiente declaración de inserción, por ejemplo, el punto y coma es después del salto de línea. Esto está causando un error durante la ejecución. ¿Cómo puedo resolver el problema?

SET DEFINE OFF;
Insert into PROD_DESC
   (PROD_NO, PROD_DESC
    )
Values
   ('XYZ', 'test
semicolon test;
'
);

Estructura de la mesa

CREATE TABLE prod_desc
(
   prod_no     VARCHAR2 (100),
   prod_desc   VARCHAR2 (1000)
);
4
Jåcob 7 mar. 2017 a las 10:54

2 respuestas

La mejor respuesta

Espace el punto y coma:

SET DEF OFF;
Insert into PROD_DESC(PROD_NO, PROD_DESC)
Values('XYZ', 'test semicolon test\;');
2
Gnqz 7 mar. 2017 a las 08:01

También me gusta usar la sintaxis q-quote. Elimina la necesidad de escapar y facilita las citas entre comillas.

La sintaxis es

q'[ <your string> ]'

<Your string> puede contener comillas o cualquier otro carácter que normalmente necesite escapar. Los caracteres [pueden ser sustituidos o "emparejados", como {} o ().

Por ejemplo:

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
           ;
3
BobC 9 mar. 2017 a las 03:43