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

استفسار عن procedure

Featured Replies

بتاريخ:

فى هذا الاجراء ....

declare
cursor cur is
select manager_id
from employees;
begin
for rec in cur loop
if rec.manager_id  = 1023  then
null;
end if;
end loop;
raise_application_error(-20101,'Invalid.');
end;

اريد ان اعرف كيف يتحقق هذا الشرط عند صحته وعند عدم صحته....

بتاريخ:

لا يوجد اى جديد سوف يحدث
بعد عدد مرات تكرار ال loop ( طبعا حسب عدد السجلات المسترجعة من ال cursor ) سوف ينفذ الجملة

raise_application_error(-20101,'Invalid.');


سواء الشرط تحقق ام لا

تم تعديل بواسطة egyhamada

  • بعد 2 أسابيع...
بتاريخ:
  • كاتب الموضوع

هذا التمرين مجرد مثال وليس التمرين الأصلى (فى الكتاب) وهو ....
---------

CREATE OR REPLACE PACKAGE check_pack IS
PROCEDURE chk_dept_job
(p_deptid IN employees.department_id%TYPE,
p_job IN employees.job_id%TYPE);
END check_pack;
--------
CREATE OR REPLACE PACKAGE BODY check_pack
IS
i NUMBER := 0;
CURSOR emp_cur IS
SELECT department_id, job_id
FROM employees;
TYPE emp_table_type IS TABLE OF emp_cur%ROWTYPE
INDEX BY BINARY_INTEGER;
deptid_job emp_table_type;
PROCEDURE chk_dept_job
(p_deptid in employees.department_id%TYPE,
p_job in employees.job_id%TYPE)
IS
BEGIN
FOR k IN deptid_job.FIRST .. deptid_job.LAST LOOP
IF p_deptid = deptid_job(k).department_id
AND p_job = deptid_job(k).job_id THEN
RETURN;
END IF;
END LOOP;
RAISE_APPLICATION_ERROR
(-20500, 'Not a valid job for this dept');
END chk_dept_job;
BEGIN -- one-time-only-procedure
FOR emp_rec IN emp_cur LOOP
deptid_job(i) := emp_rec;
i := i + 1;
END LOOP;
END check_pack;
/
فما تفسير ....وكيف يتحقق الشرط من عدمه مع raise_application_error ...
IF p_deptid = deptid_job(k).department_id
AND p_job = deptid_job(k).job_id THEN
RETURN;
END IF;
END LOOP;
RAISE_APPLICATION_ERROR
(-20500, 'Not a valid job for this dept');
---
وتفسير ان الاجراء الأتى فى النهاية ...
BEGIN -- one-time-only-procedure
FOR emp_rec IN emp_cur LOOP
deptid_job(i) := emp_rec;
i := i + 1;
END LOOP;

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

فى الباكج السابقة ....

IF p_deptid = deptid_job(k).department_id
AND p_job = deptid_job(k).job_id THEN
RETURN;
END IF;
END LOOP;
RAISE_APPLICATION_ERROR
(-20500, 'Not a valid job for this dept');
---
هل اذا تحققت حالة if سوف ينفذ ...
RAISE_APPLICATION_ERROR
(-20500, 'Not a valid job for this dept');


أم لا ...

بتاريخ:

اخى اعتقد ان عندما تريد ارجاع قيمه لبد من تحديد القيمه المرجعه اى
return pl_jop;
على سبيل المثال لانه لبد من رد فعل يحدث عند حدوث حدث معين

ارجوا المعزره لانى لسة خبير فى ال pl sql

ايهاب وجدى

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

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

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

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

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

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.