ما هو Oracle SQL Code 955؟

مؤلف: Christy White
تاريخ الخلق: 4 قد 2021
تاريخ التحديث: 19 شهر نوفمبر 2024
Anonim
How to Find Slow SQL: Databases for Developers: Performance #9
فيديو: How to Find Slow SQL: Databases for Developers: Performance #9

المحتوى

يحدث خطأ Oracle PL / SQL 955 ، والمعروف باسم ORA-00955 ، عندما يقوم المستخدم بإنشاء كائن في قاعدة البيانات باسم قيد الاستخدام من قبل كائن موجود بالفعل ، مثل الجدول أو العرض أو الفهرس أو المرادف أو المجموعة. إعطاء الكائن اسم مختلف يحل الخطأ.


ORA-00955 هو خطأ استثناء يحدث مع اسم تم تعيينه بالفعل لكائن آخر (جستن سوليفان / غيتي إيماجز / غيتي إيماجز)

رسالة خطأ

مستخدم ينشئ كائنًا في سطر أوامر Oracle PL / SQL باسم معين ويتلقى الرسالة "اسم ORA-00955 قيد الاستخدام بالفعل من قبل كائن موجود".

الأسباب

يمكن أن تظهر رسالة الخطأ عندما يقوم المستخدم بتثبيت تحديث أو تشغيل برنامج نصي في Oracle PL / SQL يمحو أو ينشئ جداول أو فهارس أو يستخدم كلمة محجوزة لكائن معرف بواسطة النظام. بشكل عام ، سيحاول المستخدم إنشاء كائن بالاسم المعين بالفعل لكائن آخر في قاعدة البيانات.

حل

يُنصح المستخدمون بتحديد اسم أو كائن آخر ، أو تعديل وإعادة تسمية كائن موجود للسماح باستخدام الاسم المطلوب. راجع DBA_OBJECTS أو USER_OBJECTS للتأكيد إذا كان لدى أي مستخدم آخر الاسم المستخدم.

تحقق أيضًا من الأسماء المستعارة والمرادفات العامة لمعرفة الاسم الحالي ، باستخدام العبارة التالية:


SELECT * FROM ALL_OBJECTS WHERE ObjectName = "NAME"؛

يحتوي الجدول ALL_OBJECTS على قائمة بجميع الكائنات التي يمكن للمستخدم الوصول إليها والمتاحة لمعرف تسجيل الدخول المحدد. لإعادة استخدام اسم ، احذف جميع الكائنات غير المرغوب فيها بنفس الاسم.

تجاهل الخطأ باستخدام معالجة الاستثناء

يمكن للمستخدمين تجاوز ORA-00955 عن طريق إنشاء معالج استثناء يتجاهل خطأ إنشاء الكائن. قم بإنشاء رمز PL / SQL لمعالجة الخطأ وتعيين "NULL" إلى حالته:

DECLARE MyNamedTableExists EXCEPTION؛ استثناء pragma (MyNamedTableExists ، -955) ؛ sql_stmt varchar2 (50): = 'إنشاء جدول tempstore (رقم col1)' ؛ تبدأ / تنفيذ sql_stmt الفوري ؛ / إنشاء جدول MyNamedTableExists كما حدد * من MySupposedTable؛ /+ تجاهل أخطاء ORA-955 إذا كان اسم الجدول موجودًا بالفعل) / استثناء عند MyNamedTableExists ثم NULL؛ END.