In SQL Server, si possono fare cose come questa:Esiste un Oracle equivalente a OUTPUT INSERTED di SQL Server. *?
INSERT INTO some_table (...) OUTPUT INSERTED.*
VALUES (...)
In modo che è possibile inserire gli insiemi arbitrari di colonne/valori e ottenere quei risultati indietro. C'è un modo per farlo in Oracle?
Il meglio che posso venire in mente è questa:
INSERT INTO some_table (...)
VALUES (...)
RETURNING ROWID INTO :out_rowid
... utilizzando: out_rowid come variabile bind. E quindi utilizzando una seconda query come questa:
SELECT *
FROM some_table
WHERE ROWID = :rowid
... ma questo non è proprio la stessa cosa come si ritorna tutto all'interno della colonna, non solo le colonne ho inserito.
C'è un modo migliore per farlo senza utilizzare molto PL/SQL e preferibilmente con una sola query?
Se sono le colonne a cui sei interessato (non i dati di riga) ... - Come stai derivando il (...)? Sicuramente a quel punto sai a quali colonne si fa riferimento nell'inserto? –
Ho appena letto su OUTPUT INSERTED (http://msdn.microsoft.com/en-us/library/ms177564.aspx). Apparentemente ti permette di scegliere se i dati di riga restituiti sono quelli precedenti o successivi all'esecuzione di qualsiasi trigger di tabella. La clausola RETURNING di Oracle non supporta questo: ti dà solo i dati dopo che i trigger hanno avuto la possibilità di cambiarli. –
@ Jeffrey Kemp - Vorrei sapere quali sono queste colonne. Tuttavia, dovrebbe essere il database. :-) –