2009-07-17 84 views
9

我們有一個表,主鍵在表上由觸發器插入時填充 - 觸發器從我們爲表創建的序列中獲取下一個序列號,並將其用於插入鍵的值。現在我們希望能夠在插入過程(PL \ SQL)中返回該值,類似於在SQL Server中選擇@@ scope_identity。我一整天都在Google上搜索,基本上什麼都沒有提出 - 任何人都可以在此之前獲得成功?Oracle - 返回新插入的鍵值

謝謝

回答

19

我不知道,如果它的工作原理與觸發器,但返回的條款可能是你在找什麼:

INSERT INTO my_table (col_1, col_2) 
    VALUES ('foo', 'bar') 
    RETURNING pk_id INTO my_variable; 
+0

是的 - 這看起來很有趣,我會試試看。 – 2009-07-17 20:25:05

0

我認爲你正在尋找一個Callable Statement。如果您試圖從Java中獲得它,那麼這裏是javadoc

+0

這將正常工作,如果我們能在新創建的鍵填充輸出參數PL \ SQL - 這基本上是我在問題中提出的問題。在插入觸發器中填充密鑰 - 現在如何在插入存儲過程中獲取該密鑰? – 2009-07-17 19:52:21

0

爲什麼不只是返回the_sequence.currval?

+0

不幸的是 - 序列被多個表使用。 – 2009-07-17 20:09:29