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

  • تسجيل الدخول عبر الفيس بوك تسجيل الدخول عبر تويتر Log In with LinkedIn Log In with Google      تسجيل دخول    
  • إنشاء حساب

صورة
- - - - -

كيف أنشئ روتيناً لهذه المهمة


9 رد (ردود) على هذا الموضوع

#1 المنار

المنار

    مشترك

  • الأعضــاء
  • 63 مشاركة

تاريخ المشاركة 13 December 2005 - 08:41 PM

السلام عليكم ورحمة الله وبركاته

أرجو مساعدتي في حل هذا السؤال

أنشئ روتيناً اسمه ADD_PROD لإدراج منتج جديد في جدول المنتجات PRODUCT ،
استخدم رقم المنتج و الوصف كباراميترات للروتين .
-- نفذ الروتين المكتوب في الفرع الأول أعلاه ، ثم استدعي الروتين مع إعطائه مدخلات معينة ،
ومن ثم استفسر عن جدول المنتجات PRODUCT لملاحظة النتائج .



وشكرا لكم

#2 Mhamad_Wanly

Mhamad_Wanly

    عضو

  • الأعضــاء
  • 33 مشاركة
  • الاسم الأول:Mhamad
  • اسم العائلة:Wanly
  • البـلـد: Country Flag

تاريخ المشاركة 13 December 2005 - 11:24 PM

مرحبا أخي الكريم
إليك الإجراء التالي الذي يقوم بإضافة رقم منتج واسمه :
CREATE OR REPLACE PROCEDURE ADD_PROD(NEW_PROD_NUM IN DEPT.DEPTNO%TYPE,
NEW_PROD_NAME IN DEPT.DNAME%TYPE )
IS
BEGIN
INSERT INTO PRODUCT(PROD_NUM,PROD_NAME)
VALUES(NEW_PROD_NUM,NEW_PROD_NAME);
END ADD_PROD;

وتسطيع تنفيذه :

EXECUTE ADD_PROD(10,'THE PRODUCT NAME');

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

#3 المنار

المنار

    مشترك

  • الأعضــاء
  • 63 مشاركة

تاريخ المشاركة 14 December 2005 - 08:50 PM

أشكرك أخي الكريم الطريقة ناجحة 100%

أشكرك من أعماق قلبي

#4 المنار

المنار

    مشترك

  • الأعضــاء
  • 63 مشاركة

تاريخ المشاركة 14 December 2005 - 09:01 PM

طيب أخي الكريم (( هنالك سؤالان أيضا متعلقان به )) ممكن ؟ أنا بتعبك معاي لكن اسمح لي فأنا مبتدأ


وهو : أنشئ روتيناً اسمه UPD_PROD لتعديل وصف منتج لمنتجٍ ما في جدول PRODUCT وزود هذا الروتين ببراميتر يمثل رقم المنتج وآخر يمثل الوصف الجديد ، أضف جزءاً خاصاً بمعالجة إستثناء عدم وجود منتج للتعديل .

-- نفذ الروتين المكتوب في الفرع أعلاه ، ثم استدع الروتين مع إعطائه مدخلات معينة ، ومن ثم استفسر عن جدول المنتجات PRODUCT لملاحظة النتائج .
قم بمناداة الروتين مع تزويده برقم منتج غير موجود في الجدول.

-----------------------------------------------------------------------

أنشئ روتيناً اسمه DEL_PROD لحذف منتج ما في جدول PRODUCT ، وزود هذا الروتين ببراميتر يمثل رقم المنتج المراد حذفه ، أضف جزءاً خاصاً بمعالجة إستثناء عدم وجود منتج للحذف .

-- نفذ الروتين المكتوب في الفرع أعلاه ، ثم استدع الروتين مع إعطائه مدخلات معينة ، ومن ثم استفسر عن جدول المنتجات PRODUCT لملاحظة النتائج .
قم بمناداة الروتين مع تزويده برقم منتج غير موجود في الجدول.

#5 Mhamad_Wanly

Mhamad_Wanly

    عضو

  • الأعضــاء
  • 33 مشاركة
  • الاسم الأول:Mhamad
  • اسم العائلة:Wanly
  • البـلـد: Country Flag

تاريخ المشاركة 15 December 2005 - 03:07 PM

تكرم عينك أخي المنار ...
الإجراء التالي يقوم بتحديث اسم صنف بالاعتماد على رقمه إن كان هذا الرقم موجود أصلا.. وفي حال عدم وجود هذا الرقم يقوم بإدخال هذا الرقم واسمه بسطر جديد ..
بس أنا عملتلك إجراء الـ UPDATE وتركتلك مهمة الـ DELETE يعني من المفروض أنك تكون قادر على إنشاؤه لأنه على نفس مبدأ
الـ UPDATE ... وعم أنتظر منك شوف إجراء الحذف كيف كتبته ... OK

CREATE OR REPLACE PROCEDURE UPD_PROD(OLD_NUM IN PRODUCT.PRO_NUM%TYPE,
NEW_NAME IN PRODUCT.PRO_NAME%TYPE)
IS
BEGIN
UPDATE PRODUCT
SET PRO_NAME = NEW_NAME
WHERE PRO_NUM = OLD_NUM;
IF SQL%NOTFOUND THEN
INSERT INTO PRODUCT(PRO_NUM,PRO_NAME)
VALUES(OLD_NUM,NEW_NAME);
END IF;
END;

الآن بإمكانك التشييك وتنفيذه :
--FOR EXECUTE EXAMPLE :
--EXECUTE UPD_PROD(NUMBER,'THE NAME')

''عم أنتظر منك PROCEDUR DEL_PROD
Mhamad_Wanly
Syria

#6 المنار

المنار

    مشترك

  • الأعضــاء
  • 63 مشاركة

تاريخ المشاركة 15 December 2005 - 03:31 PM

أخي الكريم هنالك نقطة لم تضعها وهي (( أضف جزءاً خاصاً بمعالجة إستثناء عدم وجود منتج للتعديل ))

يعني إذا أضفت رقم غير موجود تظهر لي رسالة تخبرني بذلك

أرجو أنك تضع هذه النقطة

وسوف أقوم بوضع الحل الخاص بالحذف لكي تراه

وشكرا

#7 Mhamad_Wanly

Mhamad_Wanly

    عضو

  • الأعضــاء
  • 33 مشاركة
  • الاسم الأول:Mhamad
  • اسم العائلة:Wanly
  • البـلـد: Country Flag

تاريخ المشاركة 15 December 2005 - 04:29 PM

الأخ الكريم :
إذ كنت تعمل في بيئة SQL*PLUS
أولا نفذ :
SET SERVEROUTPUT ON;
ثم إليك الكود التالي :
CREATE OR REPLACE PROCEDURE UPD_PROD(OLD_NUM IN PRODUCT.PRO_NUM%TYPE,
NEW_NAME IN PRODUCT.PRO_NAME%TYPE)
IS
BEGIN
UPDATE PRODUCT
SET PRO_NAME = NEW_NAME
WHERE PRO_NUM = OLD_NUM;
IF SQL%NOTFOUND THEN
DBMS_OUTPUT.PUT_LINE('لايوجد صنف له هذا الرقم ... تم إضافة صنف جديد ');
INSERT INTO PRODUCT(PRO_NUM,PRO_NAME)
VALUES(OLD_NUM,NEW_NAME);
--THEN IF YOU DONT WANT INSERT YOU CAN DELETE INSERT STATMENT AND UPDATE THE MESSAGE
END IF;
END;

أما إذا كنت تريد استعمال هذا الإجراء في الفورم
فإليك الكود التالي :
CREATE OR REPLACE PROCEDURE UPD_PROD(OLD_NUM IN PRODUCT.PRO_NUM%TYPE,
NEW_NAME IN PRODUCT.PRO_NAME%TYPE)
IS
MSG NUMBER;
BEGIN
UPDATE PRODUCT
SET PRO_NAME = NEW_NAME
WHERE PRO_NUM = OLD_NUM;
IF SQL%NOTFOUND THEN
SET_ALERT_PROPERTY('ALERT_NAME',ALERT_MESSAGE_TEXT,'لايوجد صنف بهذا الرقم ... هل تريد إضافة صنف جديد له هذا الرقم');
MSG := SHOW_ALERT('ALERT_NAME');
IF MSG = ALERT_BUTTON1 THEN
INSERT INTO PRODUCT(PRO_NUM,PRO_NAME)
VALUES(OLD_NUM,NEW_NAME);
ELSIF MSG = ALERT_BUTTON2 THEN
NULL;
END IF;
END IF;
END;

طبعا بهذه الحالة عليك إنشاء ALERT تسميها الاسم المطلوب
وبالنسبة لعملية INSERT في حال عدم وجود صنف فهي راجعة لك بإمكانك إضافتها أو حذفها ..
Mhamad_Wanly
Syria

#8 Mhamad_Wanly

Mhamad_Wanly

    عضو

  • الأعضــاء
  • 33 مشاركة
  • الاسم الأول:Mhamad
  • اسم العائلة:Wanly
  • البـلـد: Country Flag

تاريخ المشاركة 15 December 2005 - 04:32 PM

طبعا لاتنسى
COMMIT;
للتثبيت
Mhamad_Wanly
Syria

#9 المنار

المنار

    مشترك

  • الأعضــاء
  • 63 مشاركة

تاريخ المشاركة 15 December 2005 - 08:20 PM

مشكووووووووووووووووووووووور

وهذا البرنامج حق الحذف

ها عدل ولا لا ؟

SQL > CREATE OR REPLACE PROCEDURE DEL_PROD
(OLD_NUM IN PRODUCT.PROD_NUM%TYPE,
NEW_NAME IN PRODUCT.PROD_NAME%TYPE)
IS
BEGIN
DELETE FROM PRODUCT
WHERE PROD_NUM=OLD_NUM;
IF SQL%NOTFOUND THEN
DBMS_OUTPUT.PUT_LINE(' لايوجد صنف له هذا الرقم ')
COMMIT;
END IF;
END DEL_PROD;
/

SQL > EXECUTE DEL_PROD(NUMBER,'THE NAME');


#10 Mhamad_Wanly

Mhamad_Wanly

    عضو

  • الأعضــاء
  • 33 مشاركة
  • الاسم الأول:Mhamad
  • اسم العائلة:Wanly
  • البـلـد: Country Flag

تاريخ المشاركة 16 December 2005 - 01:57 AM

:lol: عدل :lol:
Mhamad_Wanly
Syria