Después de investigar un poco, creo que he encontrado una forma de evitar esto. Estaba buscando una manera de verificar si un script ya se había ejecutado en una base de datos de destino. Esto será principalmente para el control de versiones de mis bases de datos. Tengo una tabla creada para hacer un seguimiento de las secuencias de comandos que se han ejecutado y quería un poco de flujo dentro de mis scripts para verificar esa tabla antes de la ejecución. Si bien no he resuelto por completo el problema, he creado un script simple que básicamente hace lo que necesito, solo tengo que ajustar el DDL en las selecciones en función del valor de las variables.
paso 1 - Configuración de una variable de bits para mantener el resultado paso 2 - SUS seleccionar y ajustar la variable si no se encuentra el resultado el paso 3 - Haz lo que tiene que hacer el resultado falso paso 4 - Haz lo que tiene que hacer el verdadero resultado
Aquí está el script de ejemplo
conjunto @schemachangeid = 0;
select @schemachangeid: = 1 de SchemaChangeLog donde scriptname = '1_create_tables.sql';
seleccione 'scriptalreadyran' desde dual donde @schemachangeid = 1;
seleccione 'scriptnotran' desde dual donde @schemachangeid = 0;
También reconozco que este es un hilo viejo, pero tal vez esto ayude a alguien por ahí tratando de hacer este tipo de cosas fuera de un procedimiento almacenado como yo.
Desde el enlace proporcionado: "Solo se permiten en funciones y procedimientos almacenados". – user470714
Puede poner su script en un procedimiento almacenado y luego simplemente invocar el procedimiento. – Owen
¿Qué tal unión? – ajreal