الانتقال إلى المحتوى

سؤال في داله


sara gamal

Recommended Posts

السلام عليكم لو سمحتم انا لاقيت السؤال ده في مصدرين واحد كاتب ان اول اجابه هى الصح والتانى كاتب ان التانيه هى الصح
الجواب الثانى انا جربته ولاقيت انى لو بضع اى من 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 table
this function can be used only if the two parameters passed in are not null values

رابط هذا التعليق
شارك

السلام عليكم ورحمة الله
أختي الكريمة لو تناقشنا كده في الاختيار الاول
هل هذه الدالة يمكن أن تعمل على أي جدول
أنا لي وقفة مثلا هل الجدول لابد أي يحتوي على عمودين varchar2 مشممكن ان الجدول يكون مثلا به أعمدة ليست char ماذا يحدث كيف ستعمل هذه الفانكشن على جدول به هذه الاعمدة
لاعرف هذا مالاحظته

طبعا الثاني ليس به مشكلة
ياريت مشاركة أخرى من أحد

رابط هذا التعليق
شارك

ماشى انا معاك في نفس التفكير في الاجابه الاولى طيب التانيه ايه المشكله لو اي من 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

رابط هذا التعليق
شارك

السلام عليكم ورحمة الله وبركاته
الاخت الكريمة
الحل بسيط جدا وسهل

اولا الكود الصحيح كالاتى

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
وبالتالى اذا تم تنفيذ الدالة بدون وضع اى قيم اليها فانها تعمل ايضا

رابط هذا التعليق
شارك

اشكرك على الرد بس الكود صحيح مش انا حتى العملاه انا عايزه اعرف ليه الاجابه التانيه صح لانى جربت اضع اي من
من parameter او الاتنين مع بعض ب Null وبرده بيكون الناتج varchar2 يعنى ال null مش مأثره اساسا
سؤالى هو ليه تكون الاجابه التانيه صحيحه
وفي حاجه غريبه في التفسير انه كاتب لو التنين ب null هيكون القيمه Null بس ده غلط لان النتيجه هتكون
@oracle

تم تعديل بواسطة sara gamal
رابط هذا التعليق
شارك

اختى الكريمة .....
لو خدنا ظاهر الاجابتين يبقى الاجابتين صحيحتين ، لكن الموضوع يعتمد على فهم السؤال والاجابة .. انا ممكن افسر كل اجابه انها صح وممكن افسرها انها غلط

الاجابة الاولى : صح في حالة ما إذا كان الاجابة المقصود بيها ان الفانشكن عامة مش مخصوصة لجدول معين ، وبالتالي يمكن استخدامها مع اي جدول ، بمعنى انها فانكشن مش مبنيه على جدول معين .... يبقى لو ده المقصود من الاجابة يبقى الاجابة صحيحة .
وغلط في حالة ما إذا كان المقصود انها تستخدم مع اي جدول بغض النظر عن بناء الجدول يعني كام عدد الكولمن ، ممكن يكون واحد بس في الجدول يبقى في الحالة ده الفانكشن ده هتضرب عشان انت بصيتي براميتر واحد بس زي ما قال الاخ مصطفى ، لكن انا باختلف معاه في نوع الكولمن مفيش مشكلة لو من اي نوع ، لان نوع البراميتر VARCHAR ، وبالتالى هيحصل عملية كونفرت طبيعي سواء إذا كان الحقل المدخل DATA,NUMBER .

الاجابة التانية : صح في حالة انه لو كان المقصود من الاجابة انك لازم تبصي قيمتين للبرامترين ومينفعش يكون واحد فيهم مش متباصي له قيمة وده المقصود في الحالة ده بكلمة NULL

خطأ : لو كان المقصود من الاجابة انك ما يفنعش تاصي قيمة NULL لا ينفع عادي ، والفانكشن هترجع بـ VARCHAR برضه اللي هي على الاقل كلمة @oracle

يبقى الاجابة على فهم السؤال
وانما الاعمال بالنيات بأه :)
تقبلي تحياتي

رابط هذا التعليق
شارك

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

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

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

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   تمت استعادة المحتوى السابق الخاص بك.   مسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

جاري التحميل
×
×
  • أضف...

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

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