الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

سؤال ..

مغلق
بدأه swe في 19 مايو 2004 · 9 رد · 761 مشاهدة · في قواعد بيانات Oracle
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

كيف يمكنني ان استخدم مثل هذه الـ select statement في الفورم ,, كذلك عند استخدامي لها في PROCEDURE لا تأخذ الا ثلاث كلمات ..

مثال: اذا كتبت blue & yellow & red & green قد تعطيني error أو انها تأخذ أول ثلاث كلمات وتظهر نتائجها .. علما انه يوجد لدي ملفات تحتوي على الاربع كلمات بداخلها ..

SELECT SCORE(1) title FROM news WHERE CONTAINS(text, :control.word, 1) > 0;

كذلك اذا اردت وضعت هذا الكود في procedure فلن يعمل اما اذا وضعته في الفورم او SQL * PLUS فسيعمل ..

select count(spw_word) from ctxsys.dr$stopword

فما الحل .. ارجو المساعده ..

شكرا مقدما ..

#2

السلام عليكم

بالنسبة للسؤال الأول لم أفهمه

أما السؤال الثاني

الجملة صحيحة عندما تستدخدمها في sqlplus

و إذا أردت أن تستخدمها في الفورم تحتاج إلى into clause

select count(spw_word)  INTO   variable_name   from ctxsys.dr$stopword

or 

select count(spw_word)  INTO  :forms_item   from ctxsys.dr$stopword

مع ملاحظة أنه يجب أن يكون هناك الصلاحيات اللازمة .

جرب أولا باستخدام المستخدم

system/manager

و السلام عليكم

#3

شكرا أخي maen ..

ولكني اريد استخدام الكود في procedure وليس في الفورم ..

اما عن السؤال الاول فانا اود استخدام الـ select و contains في الفورم وتعمل في الـ plus*sql ..

شكرا على المساعده ..

واتمنى ان تستطيع مساعدتي في حل هذه المشاكل ..

#4

بالنسبة للسؤال الثاني ، إستخدم نفس الصيغة سواء تحتاج الكود داخل الفورم أو داخل البروسيجر

فهذا الكود صحيح 100% داخل البروسيجر،

decalre
    variable_name   NUMBER;
BEGIN
    select count(spw_word)  INTO   variable_name   from ctxsys.dr$stopword;
END;

و بالنسبة للسؤال الأول ، لست خبيرا به . و لكن أعتقد أن

TEXT

هو Large Object Type.

و ربما تحتاج إلى أن يكون هناك اندكس خاص على هذا الفيلد .

ثم لا تنسى

INTO Clause

إذا أردت أن تستخدم أي سيليكت داخل الفورم أو البروسيجر.

و السلام عليكم

#5

هذي هيه النتيجه لما طبقته في الـ procedure ..

nor.jpg

السموحه ومشكور على المساعده ..

#6

السلام عليكم

هذا يعني أن المستخدم (user ) الذي تستخدمه لا يملك الصلاحيات اللازمة . و هذا ما ذكرته في ردي الأول

اقتباس
      مع ملاحظة أنه يجب أن يكون هناك الصلاحيات اللازمة .

استخدم المستخدم التالي

system

و كلمة المرور الافتراضية ان لم تكن تغيرت هي

manager

أو

sys

و كلمة المرور الافتراضية ان لم تكن تغيرت هي

change_on_install

و سينجح تنفيذ البروسيجر بإذن الله .

و السلام عليكم

#7

بخصوص الصلاحية أنا أعطيت المستخدم الصلاحية عن طريق .. ولكن البروسيجر لا ينفذ علما بأنه يعمل في الفورم بشكل ممتاز ..

grant resources, ctxapp;

تسلم اخوي على المساعدة ..

#8

السلام عليكم

إذا كان الكود يعمل داخل الفورم و لا يعمل داخل البروسيجر ، باستخدام نفس اليوزر ،

فهذه مشكلة غريبة !!!!!!!!!!!!!!!؟؟؟؟؟؟؟؟؟؟!!!!!!!!!

و لكن منطقيا يجب أن يعمل في البروسيجر إذا اشتغل في الفورم و ذلك عند استخدام نفس اليوزر.

هل جربت أن تعمل connect باستخدام system ؟؟؟

ثم تنفذ البروسيجر؟؟

لأن الخطأ الوارد في ردك يعني بأن اليوزر الحالي لا يستطيع رؤية جدول ctxsys.dr$stopword

!!!!!!!!!!!!!!!

و السلام عليكم

#9

تسلم اخوي mean تعبتك وياي ..

بخصوص انه اليوزر ما يشوف الجدول .. انا اعتقد انه يراه لاني لما اسوي السيليكت برع البروسيجر تضبط وتشتغل بشكل ممتاز ..

تسلم والسموحه تعبناك ويانا ..

#10

السلام عليكم

العفو .

و لكن عندي فضول شديد أرى البروسيجر و الفورم المستخدمين

إذا كان في مجال ضعهم هنا كي أطلع عليهم .

و السلام عليكم

هذا الموضوع مغلق.

مواضيع مشابهة