بتاريخ: 6 نوفمبر 200718 سنة comment_115578 بسم الله الرحمن الرحيم أخوانى فى الله و الله أنى أحبكم فى الله .... أتمنى ان تكون الأمور على ما يرام و اعرفكم بأن كافة الرسائل التى استلمتها و الحمد لله توحى بأن مستواكم و الحمد لله تمام .. أما بخصوص اخوانى الذين ليس لديهم المستخدم HR فلا حرج ان يستخدموا المستخدم Scott ولكن مع مراعاة ان اسماء الجداول مختلفه فمثلا بدل جدول Employees يكون EMP ... وهكذا....قد قمت بحل الواجب لكم حتى تقوموا بمراجعه ما تم حله.. سوف اقوم بعد كل درس بحل الواجب حتى تتأكد من اجاباتك ان شاء الله و لكن الحل سوف يكون بعد الدرس بيومين....اليوم سوف نتكلم فى درس من أهم الدروس حيت سوف نقوم بشرح الفصل الثالث فى كتاب اوراكل و عنوان هذا الفصل هو: Using Single-Row Functions to Customize Output فى البدايه يجب تعريف الداله ( Function ) و ما معناها Function: عبارة عن دالة تقوم أنت بإعطائها المدخلات وتقوم الدالة بإجراء معين حتى تسترجع لك النتيجة. اذا الداله لابد ان تسترجع قيمه (Return Value )- ولكننا نطلق على المدخلات هذه اسم هو Argument. ويمكن للدالة أن تستقبل منك Argument واحدة أو أكثر حسب نوع الدالة نفسها. وفى هذا الفصل نتحدث عن أنواع الدوال حيث تنقسم الدوال إلى:-1)Single Row Fun: هذا النوع من الدوال يسترجع قيمة واحدة لكل صف على حدا.مثال: إذا أردت أن أقوم مثلاً بالاستعلام عن اسم الموظف على ان يكون كافة الحروف صغيرة أى small .. هنا سوف استخدم داله وهذه الداله سوف تسترجع نتيجة واحده لكل اسم أى كل صف و النتيجه عباره عن اسم كل موظف و لكن الحروف Small2)Multiple Row Function: نطلق عليها أيضاً اسم Group Function وهذا النوع من الدوال يقوم باسترجاع قيمة واحده فقط لمجموعة من صفوف.مثال: إذا أردت مثلاً الاستعلام عن مجموع المرتبات هنا سوف استخدم داله الجمع والتى تقوم باسترجاع قيمة واحدة ناتجه عن مجموعة صفوف.أخوانى الأعزاء : الفصل الثالث بأكمله يتحدث عن النوع الأول من الدوال وهو Row Single أما الفصل الرابع يتحدث عن النوع الثانى وهو الـGroup Function . ** ما هى الصيغه لكتابة اى داله : function_name [(arg1, arg2,...)] ** تنقسم الدوال من النوع Single Row إلى:1)Character Function وتنقسم إلى نوعين: ( أ ) Case – Manipulation Fun. ( ب ) Character Manipulation Fun2) Number Function.3) Date Function4) Conversion Function 5) General Function أولاً: Case Manipulation Function------------------------------------------ -1- الدالة lower: تقوم بتحويل الحروف إلى small مثال: Select lower(last_name),slary From Employees; اذا النتيجه هنا تكون اسماء الموظفين و لكن ليس كالعاده و اول حرف فى الأسم capital و لكن اى اسم يظهر يكون Small. و لكن ماذا تفعل اذا اردت البحث عن اسم الموظف بحروف small ؟؟ Select last_name, salary From Employees Where lower(last_name) = 'abel'; اعتقد الأن انك فهمت ما الهدف من هذه الداله .. 2- الدالة upper : هى عكس الداله lower فهى تقوم بتحويل الحروف إلى CAPITAL مثال: Select Upper(last_name),slary From Employees; Select last_name, salary From Employees Where Upper(last_name) = 'ABEL'; 3- الدالة Initcap: تقوم بتحويل أول حرف من كل كلمه إلى CAPTIAL وباقى الكلمة إلى small مثال: Select Initcap('sameh bakkar') From dual; لاحظ ان جدول Dual عباره عن جدول وهمى يوجد مع اوراكل و هذا الجدول نقوم فيه بالتجربه فقط...ثانياً: Character Manipulation Fun1-الداله Conact : هل تتذكر موضع الـConcatenation Bar ( || ) هذه الداله بها نفس الأثر فهى تقوم بدمج عمودين. ولكن فى الغالب نستخدم ال || .مثال: اذا اردت استرجاع اسم الموظف الأول و معه اسم الموظف الثانى فى عمود واحد.. Select concat(last_name ,firat_name) as "Full_Name" From employees; سوف تجد ان النتيجه واحد اذا استخدمت ال || ولكن لاحظ ان دالة Concat تأخذ فقط منك قيمتين (2 Arguments ONLY )ولذلك اذا اردت وضع مسافه مثلا بين الأسمين هذا يتطلب ان تقوم بعمل داله مركبه كما سنشرحها فيما بعد...2-الداله Substr: أنا فى رأى الخاص وبخبرتى المتواضعة أرى أن هذه الداله من أهم الدوال وقد أنجزت معى أعمال كثيرة جداً. هذه الداله نفترض معاً مبدئياً انها تقوم باستقطاع جزء من الكلمة او العمود حسب المعطيات.مثال: Select substr('sameh bakkar',1,5) From Dual; هنا سوف يتم قطع الكلمه من الحرف الأول الى الحرف الخامس ..3-الداله Lenghth: تقوم باسترجاع عدد حروف الكلمة أو العمود.مثال: Select Length('sameh bakkar') From Dual; 4-الداله Instr: تسترجع موقع الحرف بالكلمة بمعنى أن هذا الحرف الذى قمت انت بتحديده هل هو الحرف الأول أم 2 أم 3 ......... الخمثال: Select instr('sameh bakkar','s') as " S or Not" From Dual; 5-L pad- R Pad وضع علامات على اليمين أو اليسار بدل الفراغات.مثال: Select Rpad(salary,10,'*') as SAL From Employees; هنا اقصد ان المرتب مكون من 10 خانات اما لو كان احد الموظفين له خانات اقل فسوف يضع مكانها علامه * ..6-الداله Replace: تقوم باستبدال حرف بأخر.مثال: Select REPLACE('JACK and JUE','J','BL') as "new word" From Dual; 7-الداله Trim: تستقطع الحرف الأول من الكلمة أو الأخر أو كلاهما.مثال: Select Trim('s' from 'sameh bakkar') From dual; Select Trim('s' from 'sys') From dual; ثانياً: دوال الأرقام Number Function.-------------------------------------------------1)الداله Round: تقوم بتقريب القيمةمثال: SELECT ROUND(45.923,2), ROUND(45.923,0), ROUND(45.923,-1) FROM DUAL; فى المعادله الأولى النتيجه هى 45.92 لماذا؟ قف عند العلامه و قم بالعد رقمين جهة اليمين سوف تجد ان 92 و طبعا رقم 3 ليس اكبر من 5 لهذا لا يتم التقريب.أما فى المعادله الثانيه النتيجه سوف تكون 45 لأنه ذكر ان التقريب صفر.أما المعادلة الثالثه سوف نقوم بالعد فى الأتجاه العكسى بمعنى من اليسار و ليس من اليمين وسوف نواجه اول رقم و هو 5 و يتم تقريبه الى 10 اذا النتيجه هى 50.2)الداله : TRUNC هى عكس التقريب فهى تقوم بقطع ما بعد العلامه.مثال: SELECT TRUNC(45.923,2), TRUNC(45.923), TRUNC (45.923,-1) FROM DUAL; 3)الداله MOD : تقسم رقم على آخر وتسترجع باقى القسمة.مثال: Select MOD(5,4) From Dual; رابعاً: دوال التاريــخ--------------------------------------الداله Sysdat: تقوم باسترجاع تاريخ اليوم.مثال: Select Sysdate From Dual; ويمكن عمل عمليات حسابيه على التاريخ كما يلى: SELECT last_name, (SYSDATE-hire_date)/7 AS WEEKS FROM employees WHERE department_id = 90; الداله Months_Between: تقوم هذه الداله باسترجاع عدد الشهر بين تاريخين.مثال: Select MONTHS_BETWEEN('01-SEP-95','11-JAN-94') "Date" From dual; الداله Add_months: تقوم بإضافة شهر أو أكثر على تاريخ محدد.مثال: Select ADD_MONTHS ('11-JAN-94',6) From dual; الداله Next_day: تسترجع اليوم التالى لتاريخ محدد.مثلاً:لو اليوم 10/11/2007 وأنا أريد أن اعرف أول يوم خميس بعد هذا التاريخ هنا نستخدم داله Next day كما يلى:- Select NEXT_DAY ('01-SEP-95','FRIDAY') From dual; الداله Last- day: تسترجع أخر يوم من الشهر للتاريخ المحدد.مثال: Select LAST_DAY ('01-FEB-95') From dual; سوف نتوقف هنا و نستكمل الدرس القادم ... الفصل الثالث كبير شويه لذلك سوف اقسمه على درسين... يبقى لنا :*** Conversion Function *** General Functionالمرفقات:-- الفصل الثالث من كتاب اوراكل. ( ذاكر فقط الجزء الذى تم شرحه )-- الواجب حل التمارين الأتيه: من التمرين رقم 1 الى التمرين رقم 8 .لاحظ عشان تحل الواجب افتح ملف ال powerpoint ثم من قائمة view أختار notes Page وسوف تجد التمارين فى أخر الملف... Les03.zip تقديم بلاغ
بتاريخ: 7 نوفمبر 200718 سنة comment_115599 شكووووووووووووووووووووووووووووور ويعطيك الف الف الف عافية على الدرس تم تعديل 7 نوفمبر 200718 سنة بواسطة A-M-D تقديم بلاغ
بتاريخ: 7 نوفمبر 200718 سنة comment_115615 الله يعطيك العافيه يا مهندس سامح درس حلو مثلك سكربت المستخدم hr لمن فقده ,, في المرفقات .. ----Script_user_HR.zip تقديم بلاغ
بتاريخ: 7 نوفمبر 200718 سنة comment_115619 تصحيح بسيط أخي سامح .. قلت في هذا الكود SELECT ROUND(45.923,2), ROUND(45.923,0), ROUND(45.923,-1) FROM DUAL; ان في المعادله الثالثه يكون الناتج 50 والاصح هو 40 معذوور اخي سامح كل الشكر والتقدير لك .. تم تعديل 7 نوفمبر 200718 سنة بواسطة ra7l تقديم بلاغ
بتاريخ: 7 نوفمبر 200718 سنة كاتب الموضوع comment_115634 الأخ ra7l .... لا تعليق كل ما سوف افعله اننى سوف اكتب لك نتيجة الكود الذى ذكرته انت SQL> SELECT ROUND(45.923,2), ROUND(45.923,0), 2 ROUND(45.923,-1) 3 FROM DUAL; ROUND(45.923,2) ROUND(45.923,0) ROUND(45.923,-1) --------------- --------------- ---------------- 45.92 46 50 SQL> ها يا أخى ؟؟؟ النتيجه 40 أم 50 ؟؟؟ تقديم بلاغ
بتاريخ: 7 نوفمبر 200718 سنة comment_115658 ههههههههههههههه نبي نكحلها اعميناها .. مهندسنا سامح انا اعتذر منك وارجو ان تقبل اسفي ..انا استخدمت الداله trunc بدل round الظاهر تأثير السهر أثر بي ,, مره ثانيه آآآآآآآآآسف تقديم بلاغ
بتاريخ: 7 نوفمبر 200718 سنة comment_115677 لازلنا متابعيين معك استاذي الكربموشكرا على جهودك .....بارك الله بك تقديم بلاغ
بتاريخ: 15 ديسمبر 200817 سنة comment_144855 بشمهندس هناك غلطه بسيطه فالكوود بتاع Roundأن نتيجة التانية 46 وشكرا SQL> SELECT ROUND(45.923,2), ROUND(45.923,0), 2 ROUND(45.923,-1) 3 FROM DUAL;ROUND(45.923,2) ROUND(45.923,0) ROUND(45.923,-1)--------------- --------------- ---------------- 45.92 46 50 تقديم بلاغ
بتاريخ: 27 مارس 201015 سنة comment_188432 الله يعطيك العافيه يا مهندس سامح درس حلو مثلك سكربت المستخدم hr لمن فقده ,, في المرفقات .. ----Script_user_HR.zip تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.