Ένας χρήστης δημιουργεί ένα αντικείμενο για το Oracle PL /SQL γραμμή εντολών με ένα συγκεκριμένο όνομα και βλέπει το μήνυμα " ORA - 00955 ονομασία χρησιμοποιείται ήδη από ένα υπάρχον αντικείμενο " που εμφανίζεται στην οθόνη .
εικόνων Αιτίες
Η
μπορεί να συμβεί το μήνυμα λάθους όταν ένας χρήστης εγκαθιστά μια ενημερωμένη έκδοση , τρέχει ένα script Oracle PL /SQL που πέφτει ή δημιουργεί πίνακες ή ευρετήρια ή χρησιμοποιεί αποκλειστικά λέξη για ένα σύστημα καθορισμένων αντικείμενο . Συνήθως , ο χρήστης θα έχουν προσπαθήσει να δημιουργήσει ένα αντικείμενο με ονομασία που έχει ήδη ανατεθεί σε ένα υπάρχον αντικείμενο στη βάση δεδομένων . Οι
Η Λύση
Η
Συνιστάται στους χρήστες να επιλέξτε ένα άλλο όνομα ή το αντικείμενο ή να τροποποιήσετε και να μετονομάσετε ένα υπάρχον αντικείμενο για να επιτραπεί η χρήση του προορίζεται όνομα . Ερώτημα τις DBA_OBJECTS πίνακα συστήματος ή USER_OBJECTS να επιβεβαιώσουν εάν κάποιος άλλος χρήστης έχει το όνομα που χρησιμοποιήθηκε
Επίσης, ελέγξτε τα ψευδώνυμα και τα δημόσια συνώνυμα για το υπάρχον όνομα , χρησιμοποιώντας τις ακόλουθες δηλώσεις : .
SELECT * FROM ALL_OBJECTSWHERE ObjectName = " NAME" ?
Ο πίνακας ALL_OBJECTS περιέχει τη λίστα όλων των αντικειμένων προσπελάσιμη από το χρήστη που διατίθενται για το συγκεκριμένο log-in ID . Για να χρησιμοποιήσετε ξανά ένα όνομα , ρίχνετε όλα τα ανεπιθύμητα αντικείμενα με το ίδιο όνομα .
Εικόνων Bypass το σφάλμα Χρησιμοποιώντας ένα Handler Εξαίρεση
Η
χρήστες μπορούν να παρακάμψουν ORA - 00955 , δημιουργώντας ένα χειριστή εξαιρέσεων ότι αγνοεί το σφάλμα τη δημιουργία αντικειμένων . Δημιουργήστε ένα κομμάτι του κώδικα PL /SQL που παγιδεύει το σφάλμα και αποδίδει το σφάλμα μια κατάσταση " NULL" :
DECLAREMyNamedTableExists ΕΞΑΙΡΕΣΗ ? Pragma exception_init ( MyNamedTableExists , -955 ) ? Sql_stmt varchar2 ( 50 ) : = «δημιουργήσουν πίνακας tempstore ( col1 αριθμό ) « ? BEGIN /* εκτελέσει άμεση sql_stmt ? * /CREATE TABLE MyNamedTableExists ASSELECT * ΑΠΟ MySupposedTable ;/* + Αγνοήστε ORA -955 λάθη, αν υπάρχει ήδη το όνομα του πίνακα ) * /ΕΞΑΙΡΕΣΗ όταν MyNamedTableExists τότε NULL? ΤΕΛΟΣ ?
Η
εικόνων
Πνευματικά δικαιώματα © Γνώση Υπολογιστών Όλα τα δικαιώματα κατοχυρωμένα