lunes, 27 de febrero de 2012

ORACLE-SQL: definir una variable en un script.

a menudo en los script sql se requiere ingresar una vez el valor para luego insertarlo como parametro en busquedas, inserciones, modificaciones, etc.
Usualmente se utiliza el atributo "&1" que indica el valor que solicita el script una vez que se ha invocado. Esto conlleva a que se debe ingresar repetidamente el mismo valor todas las veces que "&1" es invocado dentro del script. Para evitar estas repeticiones innecesarias, se vierte el valor de "&1" en una variable la cual se invoca tantas veces sea necesario dentro del script.
Ejemplo:

$ cat delete_from_id.sql 


define wk_id=&1; 
prompt el valor ingresado es = &wk_id

prompt delete from tabla1...
delete from tabla1 cr where cr.ID_ARCHIVO=&wk_id;


--prompt delete from tabla2...
delete from tabla2 cci where cci.ID_ARCHIVO=&wk_id;

De esta forma en el script se pregunta sólo una vez por "&1" pero al quedar almacenada en la variable, se reutiliza el valor tantas veces sea necesario.

SQL> @delete_from_id.sql
Enter value for 1: 3476
el valor ingresado es = 3476
delete from tabla1...
old   1: delete from tabla1 cr where cr.ID=&wk_id
new   1: delete from tabla1 cr where cr.ID=3476

1 rows deleted.

old   1: delete from tabla2 cr where cr.ID=&wk_id
new   1: delete from tabla2 cr where cr.ID=3476

1 rows deleted.

No hay comentarios:

Publicar un comentario