special insertar escape characters amp oracle escaping special-characters plsqldeveloper

oracle - insertar - Escape ampersand en PL/SQL Developer



insertar ampersand in oracle (7)

Estoy intentando una simple instrucción INSERT contra una base de datos Oracle. Uno de los valores es un campo VARCHAR2 y la declaración de inserción contiene un signo. ¿Cómo hago esto? He intentado los siguientes métodos:

  1. Escapa de & as / & con set escape on
  2. desactivar el escaneo (esto hace que el error de la opción ORA-00922 falte o no sea válido)
  3. configurar definir desactivado (esto causa un error de opción ORA-00922 que falta o no es válido)

¿Alguna otra idea?


¿Has intentado algo como ésto?

INSERT INTO tablex VALUES (''Sid '' || ''&'' || '' Nancy'');

Mejorando mi primera respuesta, su problema está relacionado con el Desarrollador PL / SQL. Si ejecuta su bloque en una ventana Comando de Desarrollador PL / SQL, también puede usar el SET DEFINE OFF estándar, que funciona igual que en SQL * Plus.


Cómo lo resolví es escapar del & con otro &.

Por ejemplo:

INSERT INTO Foo (Bar) VALUES (''Up && Away'');

Funciona muy bien Gracias por toda la ayuda


Esto es solo un problema del Editor SQL. Para resolver esto, simplemente compile el procedimiento con SET DEFINE OFF; . La ejecución que es PL (ejecutándose en el servidor) no enfrentará este problema.


La versión actual de PL / SQL Developer (11.0.x) tiene un botón para deshabilitar / habilitar variables de sustitución.


Una de las características de PL / SQL Developer con las que lleva tiempo familiarizarse es la gran cantidad de tipos de ventanas diferentes.

Uno de estos es la ventana de COMANDO, que es básicamente un emulador de SQL * Plus. Podemos ejecutar comandos SQL * Plus y SQL, así que SET ESCAPE , SET DEFINE y, de hecho, SET SCAN OFF funcionan en esa ventana.


Uso chr(38) donde necesito un signo en PL / SQL.

addr:= ''mysite.com/order.aspx?no=5678'' || CHR(38) || ''id=947''; --above line gives you ''mysite.com/order.aspx?no=5678&id=947'';


el Concat funcionó perfectamente bien para mí a continuación es lo que hice en mi declaración de selección:

select FUND_NM FROM PERFORMANCE WHERE upper(FUND_DESC) in (''My L&'' ||''L FUNDS'')