Existe-t-il un équivalent Oracle à OUTPUT INSERTED de SQL Server?
Dans SQL Server, vous pouvez faire des choses comme ceci:
INSERT INTO some_table (...) OUTPUT INSERTED.*
VALUES (...)
De sorte que vous pouvez insérer arbitraire des ensembles de colonnes/valeurs et obtenir ces résultats. Est-il un moyen de le faire dans Oracle?
Le mieux que je puisse vous arriver, c'est ça:
INSERT INTO some_table (...)
VALUES (...)
RETURNING ROWID INTO :out_rowid
...à l'aide de :out_rowid comme une liaison variable. Et puis, à l'aide d'une deuxième requête comme ceci:
SELECT *
FROM some_table
WHERE ROWID = :rowid
...mais ce n'est pas tout à fait le même qu'il y retourne tout à l'intérieur de la colonne, et pas seulement les colonnes, j'ai inséré.
Est-il une meilleure façon de le faire sans l'aide de beaucoup de PL/SQL et de préférence avec une seule requête?
source d'informationauteur Jason Baker
Vous devez vous connecter pour publier un commentaire.
Peut-être que je ne comprends pas la question, mais ne serait-ce pas le faire? (vous devez savoir ce que vous voulez l'arrière)
@Vincent de retourner en vrac recueillir dans de multi-rangée insérer fonctionne uniquement en combinaison avec forall (en d'autres termes, si vous insérez de collection, vous pouvez récupérer des "résultats" dans un autre)
La
RETURNING
clause prend en charge la EN VRAC RECUEILLIR DANS syntaxe. Considérer (10g):Il fonctionne avec multi-ligne
UPDATE
etDELETE
avec ma version (10.2.0.3.0) mais PAS avecINSERT
:Peut-être que vous avez une version plus récente (11g?) et le
BULK COLLECT INTO
est pris en charge pour les multi-ligneINSERT
s ?