2011-08-02 16 views
10

Tengo un script que genera un archivo de texto que contiene varias sentencias SQL UPDATE:Desarrollador PL/SQL: ¿declaraciones múltiples?

UPDATE TableX SET Field1 = 'New value 1' WHERE Field2='1'; 
UPDATE TableX SET Field1 = 'New value 2' WHERE Field2='2'; 
UPDATE TableX SET Field1 = 'New value 3' WHERE Field2='3'; 
etc. 

Cuando me pega el bloque por encima del texto en una ventana SQL en PL/SQL Developer, me dice que el punto y coma es una carácter invalido. Cuando lo elimino, me informa que mi primera declaración no finalizó correctamente.

¿Cómo ejecuto estas declaraciones en una sola ejecución?

Respuesta

7

Creo que está utilizando la ventana Prueba. Esto solo puede ejecutar una sola declaración. La Ventana SQL y la Ventana de Comandos pueden ejecutar múltiples declaraciones.

Si necesita ejecutar esto en una ventana de prueba, puede incrustarlo en un bloque begin..end para convertirlo en un bloque de instrucción PL/SQL.

+0

La ventana de comandos funciona, ya que solo aceptará un lote gigante de SQL, pegado, como si hubiera escrito todas las líneas. Estoy en la ventana de SQL, y es ahí donde obtengo el error que describo más arriba. ¿Hay alguna manera diferente en que debería terminar mis declaraciones en la Ventana SQL? –

+0

No. El punto y coma está bien, y la sintaxis también se ve bien. Este SQL debería funcionar bien. En realidad, lo hace. Cuando lo ejecuto, analiza bien y me dice 'Tabla o vista no encontrada' como se esperaba. Ahora me parece que este no es su SQL actual (¿o tiene TableX con un Campo1 y un Campo2?). – GolezTrol

+0

El código anterior, textualmente (sin el etc.), en la Ventana SQL, produce este error: "ORA-00911: carácter no válido", y luego coloca el cursor en el primer punto y coma. Funciona en Comando, pero no en SQL. ¿Podría tener una versión más nueva/más antigua de PL/SQL? –

2

prueba de esta manera;

UPDATE TableX SET Field1 = 'New value 1' WHERE Field2='1' 
/
UPDATE TableX SET Field1 = 'New value 2' WHERE Field2='2' 
/
UPDATE TableX SET Field1 = 'New value 3' WHERE Field2='3' 
/
+0

Agradable hasta ahora, pero eso termina en diferentes pestañas –

1

Hola,

puede probar esto.

Declare 
Begin 
UPDATE TableX SET Field1 = 'New value 1' WHERE Field2='1'; 
UPDATE TableX SET Field1 = 'New value 2' WHERE Field2='2'; 
UPDATE TableX SET Field1 = 'New value 3' WHERE Field2='3'; 
End; 

en sql desarrollador para ejecutar múltiples consultas que necesita para crear un bloque anónimo.

Esperamos que esto haga su trabajo más fácil.

+0

Esto no funcionó para mí –

3

También he encontrado este error. Necesitas ir a herramientas-> preferencias. En los tipos de ventana, vaya a la ventana SQL y seleccione "Auto select statement". Esto debería eliminar el error.

Cuestiones relacionadas