ATmax بتاريخ: 9 ديسمبر 2005 تقديم بلاغ مشاركة بتاريخ: 9 ديسمبر 2005 السلام عليكم ورحمة الله وبركاته هذا ما فهمته من السؤال "ربط Function بـ Procedure"طبعاً فهمت السؤال هو نصف الاجابة وانا ابي توضيح لا اقل ولا اكثر مثلاً عندي هذا السؤال واليكون مثال :-مستعيناً بدالة ( Function )مثلا اسمها annal اكتب Procedure لطباعة الراتب السنوي لجميع الموظفين الذين يأخذون مرتب أعلى من 1000 ؟؟؟اعرب ما تحته خط خخخخ اقصد وضح ما تحته خط انا الي فهمته انه لازم نستخدم Cursor عشان نرجع الراتب السنوي لجميع الموظفين الذين يأخذون مرتب أعلى من 1000 ؟؟؟ياليت احد يوضحلي واكون شاكر له هذا المعروف " والله يوفقكم لما يحبة ويرضاه "إلى اللقاء اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
محمد فيصل امين خربط بتاريخ: 28 ديسمبر 2005 تقديم بلاغ مشاركة بتاريخ: 28 ديسمبر 2005 create or replace function annual(sal number) return number isannual_sal number;beginselect sal*12+nvl(comm,0) from emp ;end;create or replace procedure sal iscursor c is select sal from emp where sal>1000sal_variable number;beginopen c;loopfetch c into sal_variablex=annual(sal_variable);dbms_output.put_line(x);exit when c%notfound;end;[email protected]لمزيد من الاستفسار اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
ABUSANAD بتاريخ: 31 ديسمبر 2005 تقديم بلاغ مشاركة بتاريخ: 31 ديسمبر 2005 السلام عليكم, الحل كالاتي :-CREATE OR REPLACE FUNCTION func_annual_salRETURN BOOLEAN -- when want to check employee's annual salary -- which is more than 1000IS v_sal emp.sal%TYPE ; CURSOR cur_sal IS SELECT NVL(sal, 0) * 12 from emp ;BEGIN OPEN cur_sal ; LOOP FETCH cur_sal INTO v_sal ; IF v_sal > 1000 THEN RETURN (TRUE) ; ELSE RETURN (FALSE) ; END IF ; EXIT WHEN cur_sal%NOTFOUND ; END LOOP ; CLOSE cur_sal ;END func_annual_sal ;ثم نكتب الاجراء التالي :-CREATE OR REPLACE PROCEDURE proc_annual_salIS v_sal := func_annual_sal ; -- we declare v_sal variable to the -- previous function createdBEGIN IF func_annual_sal THEN DBMS_OUTPUT.PUT_LINE (v_sal) ; -- This means fuction return -- true ELSE -- If function returns false RAISE_APPLICATION_ERROR (-20202, 'There is no employee whose annual salary more than 1000') ; END IF ;END proc_annual_sal ;SQL> SET SERVEROUTPUT ONSQL> EXEC PROC_ANNUAL_SALثم ستحصل على الاجابة بعد تنفيذ الاجراء اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
ATmax بتاريخ: 31 ديسمبر 2005 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 31 ديسمبر 2005 شكرا على مشاركتكم في الموضوع ..؟...!!!جاري التجربة وسوف اوافيكم بالاخبار إلى اللقاء اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
Recommended Posts
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.