الانتقال إلى المحتوى
View in the app

A better way to browse. Learn more.

مجموعة مستخدمي أوراكل العربية

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

كيف ربط Function بـ Procedure

Featured Replies

بتاريخ:


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


هذا ما فهمته من السؤال "ربط 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
ثم ستحصل على الاجابة بعد تنفيذ الاجراء

بتاريخ:
  • كاتب الموضوع

شكرا على مشاركتكم في الموضوع ..؟...!!!


جاري التجربة وسوف اوافيكم بالاخبار


إلى اللقاء

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

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

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

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

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

Account

Navigation

البحث

إعداد إشعارات المتصفح الفورية

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.