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

  • تسجيل الدخول عبر الفيس بوك تسجيل الدخول عبر تويتر Log In with LinkedIn Log In with Google      تسجيل دخول    
  • إنشاء حساب

صورة
- - - - -

سؤال في داله


7 رد (ردود) على هذا الموضوع

#1 sara gamal

sara gamal

    عضو نشط

  • الأعضــاء
  • 411 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 07 June 2009 - 07:40 PM

السلام عليكم لو سمحتم انا لاقيت السؤال ده في مصدرين واحد كاتب ان اول اجابه هى الصح والتانى كاتب ان التانيه هى الصح
الجواب الثانى انا جربته ولاقيت انى لو بضع اى من 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

#2 mustafagamiel

mustafagamiel

    مشرف قسم النماذج والمشاريع

  • فريق الإشراف
  • 2,095 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 07 June 2009 - 09:01 PM

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

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

اللهم إن كان رزقي في الســــــــــماء فأنزله
وإن كان في الأرض فأخرجـه
وإن كان بعيدا فقربه وإن كان قريبا فيسره
وإن كان قليلا فكثره وإن كان كثيرا فبارك لي فيه

اللـــهم آمين
لا إله إلا الله وحده لاشريك له- له الملك وله الحمد وهو على كل شيء قدير
لا إله إلا أنت سبحانك-- إني كنت من الظالمين






#3 sara gamal

sara gamal

    عضو نشط

  • الأعضــاء
  • 411 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 07 June 2009 - 09:27 PM

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

#4 abdou1984

abdou1984

    عضو نشط

  • الأعضــاء
  • 270 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 07 June 2009 - 10:41 PM

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

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

#5 sara gamal

sara gamal

    عضو نشط

  • الأعضــاء
  • 411 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 07 June 2009 - 11:10 PM

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

تم التعديل بواسطة sara gamal, 07 June 2009 - 11:14 PM.


#6 mustafagamiel

mustafagamiel

    مشرف قسم النماذج والمشاريع

  • فريق الإشراف
  • 2,095 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 07 June 2009 - 11:38 PM

كلامك صحيح بالفعل لكن هل الفانكشن هكذا
لايوجد بها غير هذا وهل هناك اختيارات اخرى

اللهم إن كان رزقي في الســــــــــماء فأنزله
وإن كان في الأرض فأخرجـه
وإن كان بعيدا فقربه وإن كان قريبا فيسره
وإن كان قليلا فكثره وإن كان كثيرا فبارك لي فيه

اللـــهم آمين
لا إله إلا الله وحده لاشريك له- له الملك وله الحمد وهو على كل شيء قدير
لا إله إلا أنت سبحانك-- إني كنت من الظالمين






#7 sara gamal

sara gamal

    عضو نشط

  • الأعضــاء
  • 411 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 08 June 2009 - 12:09 AM

الداله بس كده وباقى الاختيارت غلط هما دول العليهم الاختلاف

#8 abdu1_far

abdu1_far

    عضو نشط

  • الأعضــاء
  • 430 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 08 June 2009 - 10:04 AM

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

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

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

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

يبقى الاجابة على فهم السؤال
وانما الاعمال بالنيات بأه :)
تقبلي تحياتي
قال رسول الله صلى الله عليه وسلم "إن لله عز وجل عباداً أختصهم بقضاء حوائج الناس ، حببهم إلي الخير وحبب الخير إليهم
هم الاّمنون من عذاب الله يوم القيامة " أوكما قال صلى الله عليه وسلم