الانتقال إلى المحتوى

اريد اعمل viewيطالب بادخال القيمة


عبدالرحمن رسام

Recommended Posts

اريد اعمل viewيطالب بادخال القيمة كلما قمة باستدعائه بعد الانشاء

مثلاً لوانشائة viewمن جدول الموظفين وذالك من خلال رقم الموظف واسم الموظف بشرط
where empno=&no واريد بعد الانشاء كلماء استدعيت الview يطلب ادخال الرقم
رجو المساعده لحل لهذا او ماهو البديل

تم تعديل بواسطة عبدالرحمن رسام
رابط هذا التعليق
شارك

الاخ اسامة الاخوة الاعضاء اريد الرد ضروري شاكر تعاونكم

رابط هذا التعليق
شارك

لم اسمع بطريقه مباشره لعمل ذلك ولكن يمكنك ذلك طريق الرزم PACKAGE
انشئ رزمه بها متغير و بروسيدجورال و فانكشن

CREATE OR REPLACE 
PACKAGE testx AS

x number;
   PROCEDURE set_x
    ( z number);
    function get_x  return number;
END testx;
/


CREATE OR REPLACE 
PACKAGE BODY testx IS 

PROCEDURE set_x( z number) is 
begin
x := z;
end;
   
 function get_x  return number IS
begin
 return x;
 END;

END;
/



ثم انشئ الفيو عادي وفي جملة الشرط
where empno=testx.get_x
وقبل تشغيل الفيو يجب ارسال المتغير عن طريق

begin
testx.set_x(11);
end;


وبتغير القيمه 11 تحصل علي نتائج متغيره
ويلاحظ هنا ان المتغير الخاص بالرزمه يتم التعامل معه علي مستوي جلسة العمل فقط بمعني لو ان هناك اكثر من مستخدم يريدون التعامل معه يمكن ذلك
مع تمنياتي بالتوفيق

رابط هذا التعليق
شارك

استاذي العزيز عبدالله اشكرك شكر من اعماق قلبي على تفضلك بلرد
وجزاك الله خيراً وكثر الله من امثالك
يا استاذي

لكن ارجو منكم المزيد من التوضيح وخاصة اخر كود؟
وهل يصح استخدامة مع حقل التاريخ اذا كان هو في الشرط ويطلب بين تاريخين؟
datee between a and b

تم تعديل بواسطة عبدالرحمن رسام
رابط هذا التعليق
شارك

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

رابط هذا التعليق
شارك

جربت المثال الذي اعطيته يا استاذي ولكن يحدث خطاء فما الحل لهذا الخطاء؟؟؟؟؟؟
ارجو منك المساعدة

CREATE OR REPLACE 
PACKAGE testx AS

x number;
  PROCEDURE set_x( z number);
   function get_x  return number;
END testx;
/


CREATE OR REPLACE 
PACKAGE BODY testx IS 

PROCEDURE set_x( z number) is 
begin
x := z;
end;
  
function get_x  return number IS
begin
return x;
END;

END;
/
----------------------------------
SQL> create view aa as(select * from emp
 2  where empno=testx.get_x);
where empno=testx.get_x)
           *
ERROR at line 2:
ORA-06571: Function GET_X does not guarantee not to update database
تم تعديل بواسطة عبدالرحمن رسام
رابط هذا التعليق
شارك

انا جربت المثال ده وشغال

CREATE OR REPLACE VIEW testq (
  f_id,
  f_name )
AS
SELECT a.f_id, a.f_name
 FROM test1 a
 where a.f_id=testx.get_x
/

رابط هذا التعليق
شارك

الشهم شهم والكريم تعرفه يغرقك بكرمة
شكراً لك استاذي العزيز

رابط هذا التعليق
شارك

انضم إلى المناقشة

يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.

زائر
أضف رد على هذا الموضوع...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   تمت استعادة المحتوى السابق الخاص بك.   مسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

جاري التحميل
×
×
  • أضف...

برجاء الإنتباه

بإستخدامك للموقع فأنت تتعهد بالموافقة على هذه البنود: سياسة الخصوصية