sara gamal بتاريخ: 7 يونيو 2009 تقديم بلاغ مشاركة بتاريخ: 7 يونيو 2009 السلام عليكم لو سمحتم انا لاقيت السؤال ده في مصدرين واحد كاتب ان اول اجابه هى الصح والتانى كاتب ان التانيه هى الصح الجواب الثانى انا جربته ولاقيت انى لو بضع اى من parameter او االاتنين بnull بيطلع نتيجه عايزه بس اعرف هل الاجابه الاولى في اي مانع انها تكون صح create or replace function g_mail(f1 varchar2,f2 varchar2) return varchar2 is v_mail varchar2(50); begin v_mail:=substr(f1,1,1)||substr(f2,1,1)||'@oracle'; return v_mail; end; this function can be used aganist any tablethis function can be used only if the two parameters passed in are not null values اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
mustafagamiel بتاريخ: 7 يونيو 2009 تقديم بلاغ مشاركة بتاريخ: 7 يونيو 2009 السلام عليكم ورحمة الله أختي الكريمة لو تناقشنا كده في الاختيار الاولهل هذه الدالة يمكن أن تعمل على أي جدول أنا لي وقفة مثلا هل الجدول لابد أي يحتوي على عمودين varchar2 مشممكن ان الجدول يكون مثلا به أعمدة ليست char ماذا يحدث كيف ستعمل هذه الفانكشن على جدول به هذه الاعمدةلاعرف هذا مالاحظته طبعا الثاني ليس به مشكلة ياريت مشاركة أخرى من أحد اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
sara gamal بتاريخ: 7 يونيو 2009 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 7 يونيو 2009 ماشى انا معاك في نفس التفكير في الاجابه الاولى طيب التانيه ايه المشكله لو اي من parameter قيمته ب Nullانا شايفه ان الاجابه التانيه فيها حاجه غريبه انا مش فهماها بس لاقيت اكتر من مصدر بيأكدها وكاتبين التفسير if any parameters passed in are null then the result will be null and the function will attempt to return null valueماشى ايه المشكله لما ترجع null اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
abdou1984 بتاريخ: 7 يونيو 2009 تقديم بلاغ مشاركة بتاريخ: 7 يونيو 2009 السلام عليكم ورحمة الله وبركاته الاخت الكريمة الحل بسيط جدا وسهل اولا الكود الصحيح كالاتى create or replace function g_mail(f1 varchar2 [u]default nul[/u]l ,f2 varchar2 [u]default null[/u]) return varchar2 is v_mail varchar2(50); begin v_mail:=substr(f1,1,1)||substr(f2,1,1)||'@oracle'; return v_mail; end; يجب ان تجعلى فى parameters القيمة default تساوى null وبالتالى اذا تم تنفيذ الدالة بدون وضع اى قيم اليها فانها تعمل ايضا اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
sara gamal بتاريخ: 7 يونيو 2009 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 7 يونيو 2009 (معدل) اشكرك على الرد بس الكود صحيح مش انا حتى العملاه انا عايزه اعرف ليه الاجابه التانيه صح لانى جربت اضع اي من من parameter او الاتنين مع بعض ب Null وبرده بيكون الناتج varchar2 يعنى ال null مش مأثره اساسا سؤالى هو ليه تكون الاجابه التانيه صحيحهوفي حاجه غريبه في التفسير انه كاتب لو التنين ب null هيكون القيمه Null بس ده غلط لان النتيجه هتكون@oracle تم تعديل 7 يونيو 2009 بواسطة sara gamal اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
mustafagamiel بتاريخ: 7 يونيو 2009 تقديم بلاغ مشاركة بتاريخ: 7 يونيو 2009 كلامك صحيح بالفعل لكن هل الفانكشن هكذا لايوجد بها غير هذا وهل هناك اختيارات اخرى اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
sara gamal بتاريخ: 7 يونيو 2009 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 7 يونيو 2009 الداله بس كده وباقى الاختيارت غلط هما دول العليهم الاختلاف اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
abdu1_far بتاريخ: 8 يونيو 2009 تقديم بلاغ مشاركة بتاريخ: 8 يونيو 2009 اختى الكريمة .....لو خدنا ظاهر الاجابتين يبقى الاجابتين صحيحتين ، لكن الموضوع يعتمد على فهم السؤال والاجابة .. انا ممكن افسر كل اجابه انها صح وممكن افسرها انها غلط الاجابة الاولى : صح في حالة ما إذا كان الاجابة المقصود بيها ان الفانشكن عامة مش مخصوصة لجدول معين ، وبالتالي يمكن استخدامها مع اي جدول ، بمعنى انها فانكشن مش مبنيه على جدول معين .... يبقى لو ده المقصود من الاجابة يبقى الاجابة صحيحة .وغلط في حالة ما إذا كان المقصود انها تستخدم مع اي جدول بغض النظر عن بناء الجدول يعني كام عدد الكولمن ، ممكن يكون واحد بس في الجدول يبقى في الحالة ده الفانكشن ده هتضرب عشان انت بصيتي براميتر واحد بس زي ما قال الاخ مصطفى ، لكن انا باختلف معاه في نوع الكولمن مفيش مشكلة لو من اي نوع ، لان نوع البراميتر VARCHAR ، وبالتالى هيحصل عملية كونفرت طبيعي سواء إذا كان الحقل المدخل DATA,NUMBER .الاجابة التانية : صح في حالة انه لو كان المقصود من الاجابة انك لازم تبصي قيمتين للبرامترين ومينفعش يكون واحد فيهم مش متباصي له قيمة وده المقصود في الحالة ده بكلمة NULLخطأ : لو كان المقصود من الاجابة انك ما يفنعش تاصي قيمة NULL لا ينفع عادي ، والفانكشن هترجع بـ VARCHAR برضه اللي هي على الاقل كلمة @oracleيبقى الاجابة على فهم السؤال وانما الاعمال بالنيات بأه تقبلي تحياتي اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
Recommended Posts
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.