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

بتاريخ:

انا عندي مشكلة وهي ان حقل من التقرير يحتوي على رقم ...وانا اريد ان اعرض بدلا عن الرقم شي اخر ..
وعل شان تكون الفكرة واضحة خذو هذي الملاحضات :
ان الرقم واحد اريدة يظهر "رئيسا" ً...والرقم اثنان يظهر " نائباً" ولكن هذا "رئيسا ونائبا" ليست مخزنة لي ليست داتا في القاعدة



ولكم جزيل الشكر

بتاريخ:

بامكانك عمل فنكشن يستقبل الرقم و يعيد الاسم و اجعله مكان الرقم في التقرير

ان لم تتضح الفكرة اعلمنا


تحياتي

بتاريخ:

نفرض أن لدينا الجدول التالي :

CREATE TABLE EMPLOYEE
(
 EMPLOYEE_NO		  NUMBER(5),
 EMPLOYEE_NAME	  VARCHAR2(30),
 EMPLOYEE_CPUBLIC   NUMBER(1),
 CONSTRAINT PK_EMPLOYEE PRIMARY KEY(EMPLOYEE_NO),
 CONSTRAINT CHK_EMPLOYEE_CPUBLIC CHECK(EMPLOYEE_CPUBLIC IN(1,2,3,4))
)
/



لاحظ أن هناك حقل يدعي EMPLOYEE_CPUBLIC والتي تمثل الحالة الإجتماعية ... وهذا يأخذ قيمة من أربعة بحيث أن تكون القيم مرتبة كما يلي :
1- أعزب 2- متزوج 3- أرمل 4- مطلق

1- إستخدام الشرط CASE :

SELECT EMPLOYEE_NO, EMPLOYEE_NAME, (CASE EMPLOYEE_CPUBLIC WHEN 1 THEN 'أعزب' WHEN 2 THEN 'متزوج' WHEN 3 THEN 'أرمل' ELSE 'مطلق' END) AS EMPLOYEE_CPUBLIC
FROM EMPLOYEE



2- بناء FUNCTION خاص :

CREATE OR REPLACE FUNCTION FUN_CPUBLIC(IN_CPUBLIC IN NUMBER) RETURN VARCHAR2
AS
 ID_RETURN  VARCHAR2(15);
BEGIN
 IF(IN_CPUBLIC = 1)THEN
ID_RETURN := 'أعزب';
 ELSIF(IN_CPUBLIC = 2)THEN
ID_RETURN := 'متزوج';
 ELSIF(IN_CPUBLIC = 3)THEN
ID_RETURN := 'أرمل';
 ELSIF(IN_CPUBLIC = 4)THEN
ID_RETURN := 'مطلق';
 ELSE
ID_RETURN := '';
 END IF;

 RETURN ID_RETURN;
END;
/



ومن ثم إستدعاء الغرض كما يلي :

SELECT EMPLOYEE_NO, EMPLOYEE_NAME, FUN_CPUBLIC(EMPLOYEE_CPUBLIC) AS EMPLOYEE_CPUBLIC FROM EMPLOYEE







بالتوفيق

بتاريخ:

الاخ الكريم
ممكن تستخدم الدالة decode
decode(1,'hassa',2,'ssddd')

بتاريخ:

شكرا يامهندس MMA
شرح تفصيلي وافي
تحياتي
ابو سامي

بتاريخ:

شكراً لكل المشاركين
مجهود المهندسMMA جميل ومقدر(استاذنا)
لكن اظن الدالة decode في select statment مباشرة وسهلة الاستخدام ولاتحتاج لقيد اضافي

بتاريخ:

الدالة DeCode لا تستخدم إلا في الشروط الخفيفة ... يعني لو كان مساوي القيم ينفذ الأمر ... ولو كان غير مساوي لا ينفذ الأمر ... ولا يحتوي سوي علي إشارة واحدة وهي ( = ) ... أنظر الكود التالي :

If(X = 1)Then
  <Exceptions>
ElsIf(X = 2)Then
  <Exceptions>
ElsIf(X = 3)Then
  <Exceptions>
ElsIf(X = 4)Then
  <Exceptions>
End If;



فإستخداماتها محدودة جداً

أما Case When فإستخداماتها أوسع عن الـ DeCode ... حيث يمكننا إستخدام كل أنواع إشارات المقارنة :

=, >, <, >=, <=, <>, !=




أما بخصوص بناء جمل الـ PL/SQL في مخزن الـ Functions دة بيكون أوسع بكثير ومرن عن التركيبة Case When وعن الدالة DeCode ... فمثلاً لو أحببنا نجلب عدد الأيام الفعلية للشهر الذي علي أساسة سيحاسب علية كل موظف ... فهنا من المفضل إستخدام الـ Function لأننا في هذه الحالة سنستخدم أكثر من إستعلام :

عدد الأيام الفعلية = عدد أيام الشهر الفعلي - ( أيام أجازات الطلب + الراحة الأسبوعية + العطلة الرسمية ).


عموماً الدالة DeCode لا تستخدم سوي إشارة مقارنة واحدة ( = ) ... وهي جيدة جداً في الشرط البسيط مثل نوع الموظف والحالة الإجتماعية والديانة و ....... الي آخرة :

DeCode(Employee_CPublic,1,'أعزب',2,متزوج'',3,أرمل'',4,'مطلق');







بالتوفيق

بتاريخ:

الاخ الكريم
نفعك الله بعلمك .ووفقك لما يحب ويرضي.
مشكور....

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

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

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

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

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

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.