Sto lavorando con un database Oracle 10g e desidero estrarre un gruppo di record da una tabella e utilizzarlo per estrarre i record da un gruppo di tabelle correlate.Creazione di una tabella temporanea in PL/SQL
Se questo fosse T-SQL, lo farei qualcosa di simile:
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
Tuttavia, tutte le pagine utile guardo rendono questo sembra molto più lavoro di quello che potrebbe essere, quindi penso che mi debba mancare qualcosa di ovvio.
(BTW, invece di eseguirlo come uno script, probabilmente aprirò una sessione in Oracle SQL Developer, creerò la tabella temporanea, quindi eseguirò ogni query, esportandole in CSV mentre procedo. che lavoro?)
Grazie!
Perché è necessario il passaggio della tabella temporanea? Stai solo sostituendo una selezione con un'altra. La selezione iniziale è molto costosa? O è nel caso in cui una transazione concorrente cambi le cose? –
Oracle non è SQL Server e le situazioni in cui è necessario utilizzare tabelle temporanee sono in realtà piuttosto rari. Per favore leggi la mia risposta a questa domanda simile: http://stackoverflow.com/questions/1192265/local-temporary-table-in-oracle-10-for-the-scope-of-stored-procedure/1193443#1193443 – APC
I stava semplificando - quello che stavo cercando di fare era afferrare gli ultimi 100 pazienti (meno un po 'di duplicazione). Ma parlarne qui di seguito mi ha ricordato che stamattina avrei potuto prendere 100 pazienti a partire da mezzanotte e non dovermi preoccupare che SYSDATE cambiasse mentre procedevo. :-) – SarekOfVulcan