Estoy trabajando con una base de datos Oracle 10g, y quiero extraer un grupo de registros de una tabla, y luego usar eso para extraer registros de una serie de tablas relacionadas.Crear una tabla temporal en PL/SQL
Si esto fuera T-SQL, lo haría algo como esto:
CREATE TABLE #PatientIDs (
pId int
)
INSERT INTO #PatientIDs
select distinct pId from appointments
SELECT * from Person WHERE Person.pId IN (select pId from #PatientIDs)
SELECT * from Allergies WHERE Allergies.pId IN (select pId from #PatientIDs)
DROP TABLE #PatientIDs
Sin embargo, todas las páginas votos miro hacen que este parezca mucho más trabajo de lo que podría ser, así que creo que me falta algo obvio.
(Por cierto, en lugar de ejecutar esto como una secuencia de comandos, probablemente abriré una sesión en Oracle SQL Developer, crearé la tabla temporal, y luego ejecutaré cada consulta, exportándolas a CSV a medida que avance. ese trabajo?)
Gracias!
¿Por qué necesita el paso de tabla temporal? Solo estás reemplazando una selección por otra. ¿La selección inicial es muy cara? ¿O es en caso de que una transacción simultánea cambie las cosas? –
Oracle no es SQL Server, y las situaciones en las que necesitamos utilizar tablas temporales son realmente poco comunes. Lea mi respuesta a esta pregunta similar: http://stackoverflow.com/questions/1192265/local-temporary-table-in-oracle-10-for-the-scope-of-stored-procedure/1193443#1193443 – APC
I fue simplificar, lo que en realidad estaba tratando de hacer fue tomar los últimos 100 pacientes (menos un poco de duplicación). Pero hablarlo más abajo me recordó que podría atrapar a 100 pacientes a partir de la medianoche de esta mañana, y no tener que preocuparme por el cambio de SYSDATE a medida que avanzaba. :-) – SarekOfVulcan