Instruction UPDATE

Linstruction UPDATE modifie les valeurs des colonnes spécifiées dans une ou plusieurs lignes dune table ou dune vue. Pour une description complète de linstruction SQL UPDATE, consultez Oracle Database SQL Reference.

Syntaxe

update statement :: =

Description de lillustration update_statement.gif

Description des mots clés et paramètres

alias

Un autre nom (généralement court) pour la table ou la vue référencée, généralement utilisé dans la clause WHERE.

nom_colonne

La colonne (ou lune des colonnes) à mettre à jour. Il doit sagir du nom dune colonne dans la table ou la vue référencée. Un nom de colonne ne peut pas être répété dans la liste column_name. Les noms de colonnes ne doivent pas nécessairement apparaître dans linstruction UPDATE dans le même ordre quils apparaissent dans la table ou la vue.

clause_retour

Renvoie les valeurs à partir des lignes mises à jour, éliminant le besoin de SELECT les lignes par la suite. Vous pouvez récupérer les valeurs de colonne dans des variables ou des variables hôtes, ou dans des collections ou des tableaux dhôtes. Vous ne pouvez pas utiliser la clause RETURNING pour les mises à jour à distance ou en parallèle. Si linstruction naffecte aucune ligne, les valeurs des variables spécifiées dans la clause RETURNING ne sont pas définies. Pour la syntaxe de returning_clause, voir « Clause RETURNING INTO ».

SET column_name = sql_expression

Cette clause attribue la valeur de sql_expression à la colonne identifiée par column_name. Si sql_expression contient des références à des colonnes du tableau en cours de mise à jour, les références sont résolues dans le contexte de la ligne courante. Les anciennes valeurs de colonne sont utilisées sur le côté droit du signe égal.

SET nom_colonne = (sous-requête3)

Attribue la valeur extraite de la base de données par subquery3 à la colonne identifiée par column_name. La sous-requête doit renvoyer exactement une ligne et une colonne.

SET (nom_colonne, nom_colonne, …) = (sous-requête4)

Attribue les valeurs extraites de la base de données par subquery4 aux colonnes de la liste column_name. La sous-requête doit renvoyer exactement une ligne qui comprend toutes les colonnes répertoriées. Les valeurs de colonne renvoyées par la sous-requête sont affectées aux colonnes de la liste de colonnes dans lordre. La première valeur est affectée à la première colonne de la liste, la deuxième valeur est affectée à la deuxième colonne de la liste, et ainsi de suite.

sql_expression

Toute expression SQL valide. Pour plus dinformations, consultez Oracle Database SQL Reference.

sous-requête

Une instruction SELECT qui fournit un ensemble de lignes à traiter. Sa syntaxe est similaire à celle de select_into_statement sans la clause INTO. Voir « Instruction SELECT INTO ».

table_reference

Une table ou une vue qui doit être accessible lorsque vous exécutez linstruction UPDATE, et pour dont vous devez disposer des privilèges UPDATE. Pour la syntaxe de table_reference, voir « Instruction DELETE ».

TABLE (sous-requête2)

Lopérande de TABLE est une instruction SELECT qui renvoie une valeur de colonne unique, qui doit être une table imbriquée ou un varray. Lopérateur TABLE informe Oracle que la valeur est une collection et non une valeur scalaire.

WHERE CURRENT OF cursor_name

Fait référence à la dernière ligne traité par linstruction FETCH associée au curseur spécifié. Le curseur doit être FOR UPDATE et doit être ouvert et positionné sur une ligne. Si le curseur nest pas ouvert, la clause CURRENT OF provoque une erreur. Si le curseur est ouvert, mais quaucune ligne na été récupérée ou que la dernière extraction na renvoyé aucune ligne, PL / SQL lève lexception prédéfinie NO_DATA_FOUND.

WHERE condition_recherche

Choisit les lignes à mettre à jour dans la table de base de données. Seules les lignes répondant à la condition de recherche sont mises à jour. Si vous omettez cette clause, toutes les lignes du tableau sont mises à jour.

Notes dutilisation

Vous pouvez utiliser UPDATE WHERE CURRENT OF instruction après une extraction depuis un curseur ouvert (y compris les récupérations effectuées par un curseur FOR loop), à condition que la requête associée soit FOR UPDATE. Cette instruction met à jour la ligne qui vient dêtre extraite.

Le curseur implicite SQL et les attributs du curseur %NOTFOUND, %FOUND, %ROWCOUNT et %ISOPEN vous permettent daccéder à des informations utiles sur lexécution dun UPDATE

Exemples

Lexemple 13-7 crée une table avec des ID demployés corrects mais des noms déformés. Ensuite, il exécute une instruction UPDATE avec une requête corrélée, pour récupérer les noms corrects de la table EMPLOYEES et corriger les noms dans la nouvelle table .

Pour des exemples, consultez ce qui suit:

Exemple 1-12, « Création dun sous-programme stocké »
Exemple 4-1, « Utilisation dune instruction IF-THEN simple »
Exemple 5-51, « Mise à jour dune ligne à laide dun enregistrement »
Exemple 5-52, « Utilisation de la clause RETURNING avec un enregistrement »
Exemple 6-1, « Manipulation de données avec PL / SQL »
Exemple 6-5, « Utilisation de CURRVAL et NEXTVAL »
Exemple 6-6, « Utilisation de ROWNUM »
Exemple 6-38, « Utilisation de SAVEPOINT avec ROLLBACK »
Exemple 6-41, « Utilisation de CURRENT OF pour mettre à jour la dernière ligne extraite dun curseur « 
Exemple 7-1, » Exemples de SQL dynamique « 
Exemple 7-5, » SQL dynamique avec clause RETURNING BULK COLLECT INTO « 
Exemple 7-6 , « Instruction SQL dynamique à lintérieur de FORALL »
Exemple 11-6, « Utilisation des annulations avec FORALL »
Exemple 11-9, « Opération en masse qui se poursuit malgré les exceptions »

Rubriques connexes

« Manipulation de données »
« Instruction DELETE »
« Instruction FETCH »
« Instruction INSERT »

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *