在SQL Server中,你可以做這樣的事情:是否存在與SQL Server的OUTPUT INSERTED *等價的Oracle?
INSERT INTO some_table (...) OUTPUT INSERTED.*
VALUES (...)
所以,你可以插入列/值的任意集和獲得這些結果返回。 Oracle有沒有辦法做到這一點?
我能想出的最好的是這樣的:
INSERT INTO some_table (...)
VALUES (...)
RETURNING ROWID INTO :out_rowid
...使用:out_rowid作爲綁定變量。然後用第二個查詢是這樣的:
SELECT *
FROM some_table
WHERE ROWID = :rowid
...但它返回列內的一切,不只是我插入的列,這是不太一樣的。
有沒有更好的辦法做到這一點,而無需使用大量的PL/SQL,最好只用一個查詢?
如果它是你感興趣的(而不是行數據的列)... - 您是如何得出的(......)?當然,在那一點上,你知道哪些列在插入中被引用? – 2009-07-03 05:27:10
我剛剛閱讀了關於OUTPUT INSERTED(http://msdn.microsoft.com/en-us/library/ms177564.aspx)。顯然,它允許您選擇返回的行數據是在任何表觸發器運行之前還是之後。 Oracle的RETURNING子句不支持這一點 - 它只會在觸發器有機會更改它之後爲您提供數據。 – 2009-07-03 05:30:04