PL-SQL DINAMICO****** HELP ME PLEASE*********

John Ali
15 de Mayo del 2005
QUE TAL AMIGOS, NECESITO HACER UN QUERY EN EL QUE ABERIGUO EL NOMBRE DE LA TABLA Y LOS CAMPOS DE LA MISMA TABLA, Y TODO ESTO LO PONGO EN UN PROCEDIMIENTO QUE SE EJCUTA EN UN FORMULARIO. NO HE ENCONTRADO LA FORMA DE QUE EL QUERY ME ACEPTE UNA VARIABLE DESPUES DEL
SELECT :CAMPOS FROM :NOMBRE_TABLA
WHERE ......
AGRADESCO CUALQUIER COLABORACION QUE ME PUEDAN PRESTAR

Jos?ntonio
15 de Mayo del 2005
Hola,

Para saber las tablas de esquema:

select * from user_tables

Y para saber las columnas:

SELECT *
FROM user_tab_columns

Espero te ayude

John
15 de Mayo del 2005
que tal amigo, muchas gracias por tu colaboracion, pero en realidad mi problema radica en la necesidad de reemplazar el nombre de la tabla por una variable cualquiera, la cual va contener el nombre de la tabla a consultar, porque para el nombre de los campos no tengo ningun problema, todo esto lo stoy ejcutando desde un formulario, ya que el nombre de la tabla lo captura alli.
De antemano agradesco nuevamente la colaboracion que me puedan prestar, muchas gracias amigo por
acudir a mi llamado.

Arthur
15 de Mayo del 2005
Lo de poner variables en la consulta del sql se hace con sql dinámico, ejemplo:
DECLARE
bloque VARCHAR2(50);
BEGIN
bloque := 'select var_nombre from var_tabla;'
EXECUTE IMMEDIATE bloque;
END;

de esta manera puedes usar las variables para la consulta.

espero haber servido de ayuda

Kmayen
15 de Mayo del 2005
Que tal amigo a continuacion te envio una funcion qe yo utilizo para las sequencias...

en estos links podras encontrar mas info.. http://www.dulcian.com/papers/Using%20Dynamic%20SQL%20in%20Oracle%20Forms.html
http://www.lsbu.ac.uk/oracle/oracle7/server/doc/ADG73/ch10.htm

Function DYNAMIC_SQ
(SQLSTR varchar2)
RETURN Number IS
--
-- MODIFICATION HISTORY
-- Person Date Comments
-- KMAYEN 14/MAR/05 SQL Dinamico para ejecutar las secuencias del IVE
-- --------- ------ -------------------------------------------
-- Declare program variables as shown above
my_cursor INTEGER;
NUM_ROWS_PROCESSED INTEGER;
pNexVal number;
BEGIN
my_cursor:= DBMS_SQL.OPEN_CURSOR;
DBMS_SQL.PARSE (my_cursor, SQLSTR, DBMS_SQL.V7);
DBMS_SQL.DEFINE_COLUMN (my_cursor, 1, pNexVal);
NUM_ROWS_PROCESSED := DBMS_SQL.EXECUTE (my_cursor);

LOOP
IF DBMS_SQL.FETCH_ROWS (my_cursor) > 0 THEN
DBMS_SQL.COLUMN_VALUE (my_cursor, 1, pNexVal);
ELSE
EXIT;
END IF;
END LOOP;
return(pNexVal);
DBMS_SQL.CLOSE_CURSOR (my_cursor);
END; -- Function DYNAMIC_SQ