2009-07-17 16 views
9

Tablodaki bir tetikleyici tarafından yerleştirilen birincil Anahtar içeren bir tablonuz var - tetikleyici, tablo için oluşturduğumuz bir sıradan sonraki sıra numarasını alır ve bunu kullanmak için insert üzerindeki anahtarın değeri. Şimdi, bu değeri, SQL Server'daki select @@ scope_identity değerine benzer şekilde, insert prosedürümüze (PL \ SQL) döndürmek istiyoruz. Bütün gün dolaşıyordum ve temelde hiç bir şeyle gelemedim - daha önce bununla başarılı olmuş olan var mı?Oracle - yeni eklenen anahtar değerini döndürün

Teşekkür

cevap

19

o tetikleyiciler ile çalışır ancak İADESİ fıkra aradığınız şey olabilir eğer bilmiyorum: Biz yeni oluşturulan anahtarında ile çıkış parametresi doldurmak eğer

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

Evet - bu ilginç görünüyor ve deneyeceğim. –

+0

Tetikleyiciyle bir şampiyon gibi çalışın! Her seferinde tetik tarafından yaratılan yeni anahtar değerini mutlak olarak geri alırım. Teşekkürler. –

+0

"Eksik anahtar kelime" derken bana bir hata verdi ... ama bunu PHP ile yapmaya çalışıyordum. –

0

Sana bir çağrılabilir Bildirimi arıyoruz düşünüyorum. Java'dan almaya çalışıyorsanız, javadoc.

+0

iyi çalışacak o PL \ SQL - temelde sorduğum soru. Anahtar, insert tetikleyicisine yerleştirilmiştir - şimdi eklenmiş bir prosedürde bunu nasıl ele geçirebilirim? –

0

neden sadece_sequence.currval?

+0

Maalesef - sıra birden fazla tablo tarafından kullanılıyor. –

İlgili konular