2009-07-17 4 views
9

Nous avons une table avec une clé primaire qui est remplie à l'insertion par un déclencheur sur la table - le déclencheur obtient le numéro de séquence suivant d'une séquence que nous avons créée pour la table et l'utilise pour la valeur de la clé sur l'insert. Maintenant, nous aimerions pouvoir retourner cette valeur dans notre procédure d'insertion (PL \ SQL), similaire à sélectionner @@ scope_identity dans SQL Server. J'ai été googling toute la journée et fondamentalement venir avec rien - quelqu'un a déjà réussi avec ça?Oracle - retourne la valeur de clé nouvellement insérée

Merci

Répondre

19

Je ne sais pas si cela fonctionne avec des déclencheurs, mais la clause RETURNING peut être ce que vous cherchez:

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

Oui - cela semble intéressant et je vais essayer. –

+0

A travaillé comme un champion avec la gâchette! Je reçois absolument la nouvelle valeur de clé créée par le déclencheur à chaque fois. Merci. –

+0

M'a donné une erreur disant "mot-clé manquant" ... mais essayait de le faire avec PHP. –

0

Je pense que vous êtes à la recherche d'un relevé Callable. Voici javadoc si vous essayez d'obtenir à partir de Java.

+0

Cela fonctionne très bien si nous pouvions remplir le paramètre de sortie avec la clé nouvellement créée en le PL \ SQL - qui est fondamentalement ce que je demande dans la question. La clé est remplie dans le déclencheur d'insertion - maintenant, comment puis-je saisir cela dans une procédure stockée d'insertion? –

0

pourquoi ne pas simplement renvoyer the_sequence.currval?

+0

Malheureusement, la séquence est utilisée par plusieurs tables. –

Questions connexes