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

لم اعرف الهدف من استخدام التعبير &where_clause

Featured Replies

بتاريخ:

:P

 

لم اعرف الهدف من استخدام التعبير &where_clause

في التقرير

ان شاء الله تقدرون تساعدوني

 

---نسيت اقولكم ان where_clause هو اسم ل user parameter

Select BokCde,
     Trim(InitCap(BokTtl)) Ttl,
      sum(Nvl(BokQty, 0)+ Nvl((Select Sum(Nvl(ExpQtyRmn, 0))
            From KExpBokT Where ExpBok = BokCde),
          0)) Qty,
t.bokinpri
 From KBokBscT t


&where_clause 
group by  BokCde,  Trim(InitCap(BokTtl)),t.bokinpri
order by bokcde

بتاريخ:

هذا يعنى ان جملة الـ where يتم تكوينها بصورة ديناميكية اثناء الرن تايم

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

اها وهل استخدامها لأني مااقدر استخدم ديكود لأن عندي اكثر من قيمة حيث ان
:where_clause := 'where SUBSTR(T.BOKCDE,1,3) IN (''999'',''UOB'',''uob'')';

وهل فيه طريقة اخرى بدون مااستخدم تعبير &where_clauser

بتاريخ:

السلام عليكم.

ال User Parameters في الأوراكل تنقسم إلى نوعان:
1- Bind Paramter وهذا النوع يمكن أن يسمى ب Scalar Parameter هذا لأنه يقبل Data Type واحده فقط (على حسب نوعه) هذا بالإضافه أنه يقبل فقط ال Input Value لجملة ال Where. فمثلا إذا أردت أن تقوم بعمل جملة Select على أن تتغير هذه الجمله في كل مره حسب ال Input Value لإسم القسم . أنظر المثال.

SELECT *
 FROM employees WHERE employee_id = _emp_id



عند عمل Run للتقرير ستجد Prompt يطلب منك إدخال قيمة هذا ال Parameter (مثلا 120 ) .
بالنسبه لهذا النوع ، فإن له ثلاث أنواع Data Type إما Number أو Date أو Character . ويكتب مثلا (your_parameter_name:) أي أنه لابد من أن يكون مسبوقا ب " : " . لاحظ أن هذا النوع محدود الإمكانيات ، حيث أنه لا يقبل إلا ال Input Value . فمثلا إذا أخذنا المثال السابق وعدلنا به ليكون هكذا:

SELECT *
 FROM employees WHERE _emp_l_name



وجعلنا نوعه في الReport ليكون Character
وبعذ ذلك عملنا Run للتقرير، وكتبنا في ال Prompt Screen هذا :

Last_Name = 'King'



فإنه سيرجع Error هذا لأن هذا النوع كما قلت محدود الإمكانيات ولا يقبل إلا ال Input Value وليس جملة ال Where نفسها !.

وبذلك نعدل الجمله لتكون هكذا


SELECT *
 FROM employees WHERE Last_Name = _emp_l_name



وعند عمل Run نكتب في ال Prompt Screen :

King




2- النوع الثاني (الأكثر مرونه ) يسمى ال Lexical Parameter . هذا النوع غير محدود الإمكانيات مثل الأول ، حيث أنه يمكنه أن يقبل فقط ال Input Value كما أنه يمكن أن يقبل جمله Where كامله. ده ممكن أن يقبل جملة Select كامله !. هذا النوع لا يختلف عن الأول Physically من حيث الأنواع ، ولكن Logically لابد وأن يكون من نوع Character . ويتم كتابته مسبوقا بعلامة ال ampersand . أي علامة " & " فمثلا أنظر لهذا المثال:

SELECT *
 FROM employees
 &WHERE_CLAUES



لا تنسى أن تجعل ال Data Type لهذا ال parameter لتكون Character وهذا من خلال ال Property Inspector له (شاشة الإعدادات الخاصه له) . بعد عمل Run للتقرير أكتب في ال Prompt Screen هذا:

WHERE Salary> 3000 AND department_id > 10



لاحظ أنك كتبت جملة Where كامله وليس مثل الأول. لهذا يسمى Lexical !.

بالإضافه أن هذا النوع ممكن أن يقوم بعمل الأول لأنه غير محدود الإستخدام. مثلا

SELECT *
 FROM employees WHERE Last_Name = &p_emp_l_name



وعند عمل Run للتقرير تكتب King :

هذا النوع مهم جدا جدا جدا من ناحية قوته برمجيا. لاحظ مدى الإستفاده منه إذا أردت أن تكتب جملة ال Where كلها والتي هي مرهونه بشروط معينه أو بناء على logic معين.

أعتقد أن النوع الأول بسيط وكلنا عارفينه. طيب مثلا إذا أردت أن أكتب جملة Where مرتين . الأولى لتكون هكذا

WHERE Salary> 3000 AND department_id > 10



والثانيه تكون هكذا

WHERE Salary< 10000 AND department_id between 10 and 50 AND HIRE_DATE > TO_DATE('01/01/1980','dd/mm/yyyy')



وهذا التغيير سيكون بناء على logic معين. مثلا من خلال الفورمه نفسها وذلك قبل إستدعاء التقرير ليكون هذا التقرير يتم تغييره كاملة بناء على الفورمه.

ملاحظه بسيطه: لا تنسى حجم ال Data Type لهذا ال Lexical Parameter حتى يقبل منك عدد أحرف جملة ال Where :P .

إذا أردت مثال عملي ستجد في مشاركاتي ( المتاحه من خلال الرابط الموجود ضمن التوقيع الخاص بي) مشاركه بعنوان Multiple Search Form تقريبا.

لو أردت توضيح أكثر أنا تحت أمرك.

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

جزاك الله الف خير اخ ويلووووو
وفي ميزان حسناتك ان شاء الله :P

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

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

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

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

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

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.