? Erreur Oracle PL /SQL Code 955 , aussi connu comme l'erreur ORA- 00955 , se produit lorsqu'un utilisateur crée un objet dans la base de données avec un nom déjà utilisé par un objet existant , comme une table , vue , index, synonyme ou cluster. Donner l'objet d'un autre nom disparaît généralement l'erreur . Message affiché
Un utilisateur crée un objet sur la ligne de commande Oracle PL /SQL avec un certain nom et voit le message " ORA- 00955 nom est déjà utilisé par un objet existant » affiché à l' écran .
Causes
Le message d' erreur peut se produire lorsqu'un utilisateur installe une mise à jour , exécute un script Oracle PL /SQL qui tombe ou crée des tables ou des index ou utilise une réservés parole pour un objet défini par le système . Habituellement , l'utilisateur aura tenté de créer un objet avec un nom déjà attribué à un objet existant dans la base de données.
Solution
Les utilisateurs sont invités à choisir un autre nom ou l'objet ou de modifier et renommer un objet existant pour permettre l' utilisation du nom recherché. Interroger les DBA_OBJECTS table système ou user_objects de confirmer si un autre utilisateur a le nom en usage
Vérifiez également alias et synonymes publics pour le nom existant , en utilisant les déclarations suivantes: .
SELECT * FROM ALL_OBJECTSWHERE ObjectName = " nom";
La table ALL_OBJECTS contient la liste de tous les objets accessibles à l'utilisateur disponibles pour l' identifiant de connexion spécifique. Pour réutiliser un nom, déposer tous les objets indésirables avec le même nom .
Contourner le erreur à l'aide d'une exception Handler
Les utilisateurs peuvent contourner ORA- 00955 en créant un gestionnaire d' exception qui ignore l'erreur de création de l'objet. Créer un morceau de code PL /SQL qui emprisonne l'erreur et lui attribue l'erreur d'un statut "NULL" :
DECLAREMyNamedTableExists EXCEPTION ; exception_init pragma ( MyNamedTableExists , -955 ) ; SQL_stmt varchar2 ( 50) : = ' créer tableau tempstore ( col1 nombre) »; BEGIN /* exécuter SQL_stmt immédiate; * /CRÉER MyNamedTableExists tABLE ASSELECT * FROM MySupposedTable ;/* + Ignorer Ora- 955 erreurs si le nom de la table existe déjà) * /EXCEPTION lorsque MyNamedTableExists alors nul end; Photos