سؤال

وأنا أحاول أن SELECT من عرض dba_tab_cols من داخل الإجراء المخزن. انها لا تعمل، وأنا لا أعرف لماذا.

إذا كنت تنفيذ SQL التالية كما استعلام:

SELECT t.data_type FROM dba_tab_cols t
WHERE 
    t.table_name = 'ACCOUNTTYPE' AND 
    t.column_name = 'ACCESSEDBY';

وأنه يعمل بشكل جيد. ولكن إذا كنت نسخه إلى إجراء مخزن مثل ذلك:

SELECT t.data_type INTO dataType FROM dba_tab_cols t
WHERE
    t.table_name = 'ACCOUNTTYPE' AND 
    t.column_name = 'ACCESSEDBY';

وأحصل على رسالة الخطأ "PL / SQL: ORA-00942: جدول أو طريقة عرض غير موجود" ويسلط الضوء على محرر dba_tab_cols بينما كان يحاول تجميع. يتم استخدام نفس المستخدم ديسيبل في كلتا الحالتين.

وأعلن نوع البيانات على النحو التالي:     نوع البيانات VARCHAR2 (128)؛

وPL / SQL (أوراكل 9)

وأي شخص يعرف هذه القضية؟

هل كانت مفيدة؟

المحلول

وانها على الأرجح قضية امتيازات. هو إذن للوصول dba_tab_columns عبر دور أم أنه حدد منحة مباشرة إلى المستخدم الخاص بك؟ امتيازات الممنوحة عبر أدوار غير متوفرة في SPROCS.

ونظرة سريعة على جوجل يوحي باستخدام all_tab_cols بدلا من ذلك ومعرفة ما إذا هذا الجدول لديه معلومات المطلوبة التي تحتاج إليها.

نصائح أخرى

لإضافة إلى الإجابة أوين ل:

<اقتباس فقرة>   

وبالنسبة لمعظم الناس، لأنه يأتي بمثابة   من المستغرب أن لا يمكن للمستخدم اختيار   الجدول من داخل الإجراء إذا   وقال انه لم يتم منح حدد   الحق مباشرة (على العكس من خلال   دور)

     

إذا يحاول المستخدم طاولة لجمع هذه   الإجراء، وقال انه يحصل على ORA-00942   على الرغم من أن هذا الجدول موجود بالتأكيد   وتم منحه الحق في اختيار   هذه الطاولة. المشكلة هي   الإجراءات لا تحترم الأدوار. فقط   احترام الحقوق الممنوحة مباشرة.   لذلك، وهذا يعني أن مالك الجدول أن   regrant الحق في تحديد:

http://www.adp-gmbh.ch/ora/err /ora_00942.html

وليس لدي أوراكل مثبتة، ولكن ربما نوع البيانات هو كلمة محجوزة. فما استقاموا لكم فاستقيموا محاولة شيء آخر.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top