بتاريخ: 7 يونيو 200916 سنة comment_159604 السلام عليكم لو سمحتم انا لاقيت السؤال ده في مصدرين واحد كاتب ان اول اجابه هى الصح والتانى كاتب ان التانيه هى الصح الجواب الثانى انا جربته ولاقيت انى لو بضع اى من 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 تقديم بلاغ
بتاريخ: 7 يونيو 200916 سنة comment_159614 السلام عليكم ورحمة الله أختي الكريمة لو تناقشنا كده في الاختيار الاولهل هذه الدالة يمكن أن تعمل على أي جدول أنا لي وقفة مثلا هل الجدول لابد أي يحتوي على عمودين varchar2 مشممكن ان الجدول يكون مثلا به أعمدة ليست char ماذا يحدث كيف ستعمل هذه الفانكشن على جدول به هذه الاعمدةلاعرف هذا مالاحظته طبعا الثاني ليس به مشكلة ياريت مشاركة أخرى من أحد تقديم بلاغ
بتاريخ: 7 يونيو 200916 سنة كاتب الموضوع comment_159624 ماشى انا معاك في نفس التفكير في الاجابه الاولى طيب التانيه ايه المشكله لو اي من 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 تقديم بلاغ
بتاريخ: 7 يونيو 200916 سنة comment_159640 السلام عليكم ورحمة الله وبركاته الاخت الكريمة الحل بسيط جدا وسهل اولا الكود الصحيح كالاتى 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 وبالتالى اذا تم تنفيذ الدالة بدون وضع اى قيم اليها فانها تعمل ايضا تقديم بلاغ
بتاريخ: 7 يونيو 200916 سنة كاتب الموضوع comment_159651 اشكرك على الرد بس الكود صحيح مش انا حتى العملاه انا عايزه اعرف ليه الاجابه التانيه صح لانى جربت اضع اي من من parameter او الاتنين مع بعض ب Null وبرده بيكون الناتج varchar2 يعنى ال null مش مأثره اساسا سؤالى هو ليه تكون الاجابه التانيه صحيحهوفي حاجه غريبه في التفسير انه كاتب لو التنين ب null هيكون القيمه Null بس ده غلط لان النتيجه هتكون@oracle تم تعديل 7 يونيو 200916 سنة بواسطة sara gamal تقديم بلاغ
بتاريخ: 7 يونيو 200916 سنة comment_159653 كلامك صحيح بالفعل لكن هل الفانكشن هكذا لايوجد بها غير هذا وهل هناك اختيارات اخرى تقديم بلاغ
بتاريخ: 7 يونيو 200916 سنة كاتب الموضوع comment_159658 الداله بس كده وباقى الاختيارت غلط هما دول العليهم الاختلاف تقديم بلاغ
بتاريخ: 8 يونيو 200916 سنة comment_159686 اختى الكريمة .....لو خدنا ظاهر الاجابتين يبقى الاجابتين صحيحتين ، لكن الموضوع يعتمد على فهم السؤال والاجابة .. انا ممكن افسر كل اجابه انها صح وممكن افسرها انها غلط الاجابة الاولى : صح في حالة ما إذا كان الاجابة المقصود بيها ان الفانشكن عامة مش مخصوصة لجدول معين ، وبالتالي يمكن استخدامها مع اي جدول ، بمعنى انها فانكشن مش مبنيه على جدول معين .... يبقى لو ده المقصود من الاجابة يبقى الاجابة صحيحة .وغلط في حالة ما إذا كان المقصود انها تستخدم مع اي جدول بغض النظر عن بناء الجدول يعني كام عدد الكولمن ، ممكن يكون واحد بس في الجدول يبقى في الحالة ده الفانكشن ده هتضرب عشان انت بصيتي براميتر واحد بس زي ما قال الاخ مصطفى ، لكن انا باختلف معاه في نوع الكولمن مفيش مشكلة لو من اي نوع ، لان نوع البراميتر VARCHAR ، وبالتالى هيحصل عملية كونفرت طبيعي سواء إذا كان الحقل المدخل DATA,NUMBER .الاجابة التانية : صح في حالة انه لو كان المقصود من الاجابة انك لازم تبصي قيمتين للبرامترين ومينفعش يكون واحد فيهم مش متباصي له قيمة وده المقصود في الحالة ده بكلمة NULLخطأ : لو كان المقصود من الاجابة انك ما يفنعش تاصي قيمة NULL لا ينفع عادي ، والفانكشن هترجع بـ VARCHAR برضه اللي هي على الاقل كلمة @oracleيبقى الاجابة على فهم السؤال وانما الاعمال بالنيات بأه تقبلي تحياتي تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.