Ejecutar procedimiendo dinamico dependiendo esquema BD
Publicado por Huesitos (1 intervención) el 07/04/2017 20:03:58
Hola buenas, estaba mirando la documentación de Oracle y no he encontrado nada y la verdad no se como solucionarlo.... a ver si alguien me puede echar una manita :)
Os pongo en situación:
- Tengo dos bases de datos a las que llamaremos BD_A y BD_"X".
- La BD_"X" tiene un procedimiento: PROCEDIMENTO_BD_"X"(parametrosEntrada IN, parametrosSalida OUT).
- La BD_A tiene un procedimiento que llama a PROCEDIMENTO_BD_"X"(parametrosEntrada IN, parametrosSalida OUT).
La idea es:
Tengo una tabla que contiene una PK y luego un campo que se llama esquema. Obtenemos de esa tabla la BD a la que llamar y llamamos al procedimiento (claramente todas las BD_'X' tiene el procedimiento ya implementado y con los permisos adecuados tanto para BD_A como BD_'X').
Por lo tanto la idea para proceder que tengo ahora mismo es:
Declaro:
Ejecución:
SELECT ESQUEMA_BD INTO esquema FROM TABLA WHERE PK = 1;
sentencia := esquema||.PROCEDIMIENTO_BD_"X"(parametrosEntrada IN, parametrosSalida OUT);
EJECUTE IMMEDIATE sentencia;
Y esto da error, ya que no se como pasar los parámetros ni de entrada ni de salida y ni si quiera si es correcto.
¿Alguna idea? Quizás se pueda hacer de otra manera y la desconozco :/
Si no entendéis algo avisadme. Muchas gracias adelantadas.
Os pongo en situación:
- Tengo dos bases de datos a las que llamaremos BD_A y BD_"X".
- La BD_"X" tiene un procedimiento: PROCEDIMENTO_BD_"X"(parametrosEntrada IN, parametrosSalida OUT).
- La BD_A tiene un procedimiento que llama a PROCEDIMENTO_BD_"X"(parametrosEntrada IN, parametrosSalida OUT).
La idea es:
Tengo una tabla que contiene una PK y luego un campo que se llama esquema. Obtenemos de esa tabla la BD a la que llamar y llamamos al procedimiento (claramente todas las BD_'X' tiene el procedimiento ya implementado y con los permisos adecuados tanto para BD_A como BD_'X').
Por lo tanto la idea para proceder que tengo ahora mismo es:
Declaro:
esquema VARCHAR2(2000)
sentencia VARCHAR2(2000)
Ejecución:
SELECT ESQUEMA_BD INTO esquema FROM TABLA WHERE PK = 1;
sentencia := esquema||.PROCEDIMIENTO_BD_"X"(parametrosEntrada IN, parametrosSalida OUT);
EJECUTE IMMEDIATE sentencia;
Y esto da error, ya que no se como pasar los parámetros ni de entrada ni de salida y ni si quiera si es correcto.
¿Alguna idea? Quizás se pueda hacer de otra manera y la desconozco :/
Si no entendéis algo avisadme. Muchas gracias adelantadas.
Valora esta pregunta


0