Consulta PLSQL
Hola,
Tengo el siguiente procedimiento y necesito saber como pasar la variable NOMBRE_TABLA a la última select. Es decir, en la primera select despues de BEGIN obtengo el nombre de la tabla que necesito para la ultima select (dentro del FOR) y no se como pasarle esa variable. Si sabeis como hacerlo o se os ocurrre alguna otra forma y me quiere ayudar...
CREATE OR REPLACE PROCEDURE PROCEDIMIENTO1 AS
CURSOR C1 IS SELECT C1, C2,...Cn FROM TABLA1...;
NOMBRE_TABLA VARCHAR(50);
BEGIN
SELECT C1 INTO NOMBRE_TABLA FROM TABLA2 WHERE...;
FOR I IN C1 LOOP
SELECT C1, C2.. FROM NOMBRE_TABLA WHERE...;
END LOOP
END;
/
Muchas gracias
Un saludo
Tengo el siguiente procedimiento y necesito saber como pasar la variable NOMBRE_TABLA a la última select. Es decir, en la primera select despues de BEGIN obtengo el nombre de la tabla que necesito para la ultima select (dentro del FOR) y no se como pasarle esa variable. Si sabeis como hacerlo o se os ocurrre alguna otra forma y me quiere ayudar...
CREATE OR REPLACE PROCEDURE PROCEDIMIENTO1 AS
CURSOR C1 IS SELECT C1, C2,...Cn FROM TABLA1...;
NOMBRE_TABLA VARCHAR(50);
BEGIN
SELECT C1 INTO NOMBRE_TABLA FROM TABLA2 WHERE...;
FOR I IN C1 LOOP
SELECT C1, C2.. FROM NOMBRE_TABLA WHERE...;
END LOOP
END;
/
Muchas gracias
Un saludo
Si describes un poco mas cual es el problema y hacia donde quieres llegar, podria ayudarte.
Gracias.
Saludos.
Gracias.
Saludos.
El código PlSql, debe poder ser compilado, para lo cual, los objetos referenciado deben ser conocidos en tiempo de compilación.
Al usar TableName como objeto variable, no podemos usar sentencias Sql clásicas sino que tendremos que recurrir a Sql-Dinámico, es decir la sentencia se verificara cuando se ejecute el procedimento.
Existen bastantes variantes de Sql-Dinámico. Unas mediante Execute Inmediate, otras mediante el package Dbms_Sql.
Lo mejor es que veas algunos ejemplos:
http://www.orafaq.com/wiki/PL/SQL_FAQ#Can_one_use_dynamic_SQL_statements_from_PL.2FSQL.3F
http://download.oracle.com/docs/cd/B28359_01/appdev.111/b28370/dynamic.htm
Al usar TableName como objeto variable, no podemos usar sentencias Sql clásicas sino que tendremos que recurrir a Sql-Dinámico, es decir la sentencia se verificara cuando se ejecute el procedimento.
Existen bastantes variantes de Sql-Dinámico. Unas mediante Execute Inmediate, otras mediante el package Dbms_Sql.
Lo mejor es que veas algunos ejemplos:
http://www.orafaq.com/wiki/PL/SQL_FAQ#Can_one_use_dynamic_SQL_statements_from_PL.2FSQL.3F
http://download.oracle.com/docs/cd/B28359_01/appdev.111/b28370/dynamic.htm
Hola Leandro,
Lo primero, muchas gracias por tu interes, veras, el problema es que utilizo tablas cuyo nombre es dinámico. Cada dÃa una aplicación genera una tabla cuyo nombre contiene la fecha del dÃa que es gerada.
ejemplo A100525_AJOB.
Y necesito ejecutar un proceso automatico que cada dÃa haga una extracción de la tabla del dia correspondiete. Por tanto necesito pasar en la última select del post original el nombre de la tabla correspondiente a ese dia. Nunca he trabajado con sql-dinamico y revisando los links que me has enviado no consigo ver la forma de haverlo. ¿Me puedes echar una mano?
Muchas gracias
Un Saludo
Lo primero, muchas gracias por tu interes, veras, el problema es que utilizo tablas cuyo nombre es dinámico. Cada dÃa una aplicación genera una tabla cuyo nombre contiene la fecha del dÃa que es gerada.
ejemplo A100525_AJOB.
Y necesito ejecutar un proceso automatico que cada dÃa haga una extracción de la tabla del dia correspondiete. Por tanto necesito pasar en la última select del post original el nombre de la tabla correspondiente a ese dia. Nunca he trabajado con sql-dinamico y revisando los links que me has enviado no consigo ver la forma de haverlo. ¿Me puedes echar una mano?
Muchas gracias
Un Saludo