variable una sustitucion resultado guardar ejemplos developer declaracion consultas consulta comandos sql plsql variables substitution

sustitucion - ¿Cómo puedo hacer que SQL Developer/SQL+solicite solo una vez para una variable de sustitución que ocurre varias veces en una sola declaración?



variables de sustitucion pl sql (4)

Mientras formaba esta publicación, descubrí cómo hacerlo:

:a_var select * from A_TABLE where A_COLUMN = :a_var union select * from A_TABLE where B_COLUMN = :a_var;

SQL Developer le pedirá una variable de vinculación, puede ingresarla y presionar aplicar.

Tengo una consulta más o menos así:

select * from A_TABLE where A_COLUMN = ''&aVariable'' union select * from A_TABLE where B_COLUMN = ''&aVariable'';

Pero cuando lo ejecuto, SQL Developer me solicita la variable dos veces, aunque sea la misma variable.

Si hay una manera de hacer que se solicite solo una vez para una variable que se usa dos veces, ¿cómo lo hago?

No quiero usar un script, debe ser una sola consulta ejecutable.


Sé que encontraste otra forma de hacerlo, pero tu respuesta básica es que si duplicas el signo (por ejemplo, usa ''&& aVariable''), el valor que ingreses para la variable de sustitución se recordará por la duración de tu sesión. . Tenga en cuenta que en este caso si vuelve a ejecutar la consulta no se le volverá a preguntar, seguirá usando el mismo valor.


select * from A_TABLE where A_COLUMN = ''&aVariable'' union select * from A_TABLE where B_COLUMN = ''&&aVariable'';

Observe cómo la segunda (y posterior) variables utilizará doble ampersand (&&)


Por lo tanto, cuando usa & sustitución, solo está utilizando la única y más rápida forma en lugar de tener que escribir un valor nuevamente. Al usar &&, el valor queda bloqueado en el nombre de la variable. Por lo tanto, la variable && sería diferente de && variable1. Al hacerlo de esta manera, se le preguntará una vez y el valor que ingresó se adherirá a ese nombre de variable. Simplemente ponlo si escribes tu código así:

SELECT * FROM A_TABLE WHERE A_COLUMN = ''&&aVariable1'' UNION SELECT * FROM A_TABLE WHERE B_COLUMN =''&&aVariable2'';

Luego, si desea utilizar un conjunto diferente de valores, deberá cambiar el nombre de la variable a algo como esto ''&& aVariable3'' y ''&& aVariable4'' debería ser suficiente para otro conjunto.