الانتقال إلى المحتوى
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.

سؤال عن كيفية تشغيل الاجراء من داخل الزناد

Featured Replies

بتاريخ:

أريد عمل زناد يشترط الا يكون راتب الموظف أكبر من راتب الرئيس وقد حاولت التالي لكن ما ظبطت ,, معليش أخوكم لسة في بداية الطريق أرجوا المساعة وجزا الله خيراً كل من يقوم على أمر هذا المنتدى الذي أقل ما يقال عنه أنه رائع ...

SQL> create or replace procedure get_president_sal
2 (v_job in emp2.job%type)
3 is
4 v_sal emp2.sal%type;
5 begin
6 select sal into v_sal
7 from emp2
8 where job = 'PRESIDENT';
9 END get_president_sal;
10 /

Procedure created.

SQL> EXECUTE get_president_sal('PRESIDENT')

PL/SQL procedure successfully completed.

SQL> CREATE OR REPLACE TRIGGER not_ov_president_sal
2 before update or insert of sal,job on emp2
3 FOR EACH ROW
4 WHEN (new.job <> 'PRESIDENT')
5 DECLARE
6 v_pres_sal emp2.sal%type;
7 BEGIN
8 v_pres_sal:=get_president_sal('PRESIDENT');
9 IF (:new.sal) > v_pres_sal then
10 RAISE_APPLICATION_ERROR(-20505,'presiden salry zone');
11 END IF;
12 END;
13 /

Warning: Trigger created with compilation errors.

SQL> SHOW ERROR
Errors for TRIGGER NOT_OV_PRESIDENT_SAL:

LINE/COL ERROR
-------- -----------------------------------------------------------------
4/1 PL/SQL: Statement ignored
4/13 PLS-00222: no function with name 'GET_PRESIDENT_SAL' exists in
this scopeeft]

بتاريخ:

الأخ\ alcagam
انا فهت من سؤالك انك تريد منع الموظفين من الحصول على راتب أعلى من راتب الرئيس

1- نعمل FUNCTION :

 
CREATE OR REPLACE FUNCTION GET_SALARY RETURN NUMBER
IS
V_SAL NUMBER:=0;
BEGIN
SELECT SAL INTO V_SAL FROM EMP
WHERE JOB='PRESIDENT';
RETURN(V_SAL);
END;



2- نعمل TRIGGER :

CREATE OR REPLACE  TRIGGER CHECK_SALARY
BEFORE INSERT OR UPDATE ON EMP
FOR EACH ROW
BEGIN
IF :NEW.SAL>GET_SALARY THEN
RAISE_APPLICATION_ERROR(-20502,'YOU CANNOT ASSIGN SALARY MORE THAN'||GET_SALARY );
END IF;
END;

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

الأخ الفاضل \ sky information
أولاً لك كل الشكر على الاهتمام بالفعل الدالة والزناد مشى حالهم لكن عند التنفيذ بيصطدموا ب mutating ساحاول حلها باذن الله ,,, مرة اخرى لك الشكر عزيزي

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

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

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

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

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

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.