¿Puede una consulta SQL unirse a tablas que no se conocen en tiempo de ejecución?

Necesito escribir una consulta que extraiga una gran cantidad de datos de un sistema de forma regular.

El problema que tengo es que hay ~100 tablas que tienen nombres incomprensibles creados por la aplicación a medida que se inician nuevos proyectos. El nombre de la tabla para un proyecto específico se mantiene en la tabla del proyecto.

Así que necesito unirme entre la tabla del proyecto, un puñado de otras, luego cada una de las tablas enumeradas en una columna de la tabla del proyecto.

¿Es esto posible, si es así algún consejo?

preguntado el 04 de julio de 12 a las 10:07

"¿Algún consejo?" - qué tal jobserve.com ;-) -

Más en serio, deberá buscar en "SQL dinámico" -

¡Noticias de última hora... tu solicitud es una idiota! En lugar de crear una nueva tabla para cada proyecto, ¿qué le parece usar el mismo tabla con una columna adicional llamada project_id? -

1 Respuestas

Pon tu consulta en EXECUCTE IMMEDIATE declaración. (esto se llama sql dinámico)

declare
  vcTableName varchar2(30);
  vcResult varchar2(128);
begin

  vcTableName := 'SOME_TABLE_NAME';

  EXECUTE IMMEDIATE 'SELECT column FROM '||vcTableName||' WHERE conditions' into vcResult;

  do_something(vcResult);

end;
/

Respondido 04 Jul 12, 10:07

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.