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

كيف ربط Function بـ Procedure


ATmax

Recommended Posts


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


هذا ما فهمته من السؤال "ربط Function بـ Procedure"

طبعاً فهمت السؤال هو نصف الاجابة وانا ابي توضيح لا اقل ولا اكثر

مثلاً عندي هذا السؤال واليكون مثال :-

مستعيناً بدالة ( Function )مثلا اسمها annal اكتب Procedure لطباعة الراتب السنوي لجميع الموظفين الذين يأخذون مرتب أعلى من 1000 ؟؟؟

اعرب ما تحته خط خخخخ اقصد وضح ما تحته خط

انا الي فهمته انه لازم نستخدم Cursor عشان نرجع الراتب السنوي لجميع الموظفين الذين يأخذون مرتب أعلى من 1000 ؟؟؟


ياليت احد يوضحلي


واكون شاكر له هذا المعروف " والله يوفقكم لما يحبة ويرضاه "


إلى اللقاء

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

  • بعد 3 أسابيع...

create or replace function annual(sal number) return number is
annual_sal number;
begin
select sal*12+nvl(comm,0) from emp ;
end;
create or replace procedure sal is
cursor c is
select sal from emp where sal>1000
sal_variable number;
begin
open c;
loop
fetch c into sal_variable
x=annual(sal_variable);
dbms_output.put_line(x);
exit when c%notfound;
end;


[email protected]
لمزيد من الاستفسار

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

السلام عليكم, الحل كالاتي :-

CREATE OR REPLACE FUNCTION func_annual_sal
RETURN BOOLEAN -- when want to check employee's annual salary
-- which is more than 1000
IS
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_sal
IS
v_sal := func_annual_sal ; -- we declare v_sal variable to the
-- previous function created
BEGIN
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 ON
SQL> EXEC PROC_ANNUAL_SAL
ثم ستحصل على الاجابة بعد تنفيذ الاجراء

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

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

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

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

×   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.

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

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

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