الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كيف يمكننى تخزين القيمة Null عن طريق الستورد بروسيدجر إذا كان البارامتر فارغ ؟

بدأه red_scorpion1 في 11 سبتمبر 2013 · 6 رد · 618 مشاهدة · في قواعد بيانات Microsoft SQL Server
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته

 

كيف يمكننى عن طريق الستورد بروسيدجر فى حالة إذا كان القيمة المرسلة للبارامتر فارغة يقوم بتسجيل Null تلقائيا فى الجدول ؟ وإذا كان غير ذلك يتم تسجيل القيمة المرسلة للبارامتر ؟

جربت الكود التالى ولكنه لا يسجل Null وإنما يجعل الحقل فارغ فقط ؟

@Cus_id INT,
@Cus_name NVARCHAR(100) = NULL,
@Cus_phone INT = NULL,
@Cus_address NVARCHAR(MAX) = NULL


as

UPDATE Customers SET
Cus_name = ISNULL(@Cus_name, Cus_name),
Cus_phone = ISNULL(@Cus_phone, Cus_phone),
Cus_address = ISNULL(@Cus_address, Cus_address)

WHERE Cus_id = @Cus_id

اعلم كيف اقوم بعملها بواسطة C# ولكن هل توجد طريقة لتنفيذها من الستورد بروسيدجر نفسه ؟

تم تعديل هذه المشاركة بواسطة red_scorpion1 في 11 سبتمبر 2013 في 05:44

#2

السلام عليكم

 

اما ان تستخدم الشرط if  قبل التعديل مثل

 

if @Cus_name =''

set @Cus_name  = null

 

او باستخدام case  في جملة التعديل

UPDATE Customers SET
Cus_name = CASE when @Cus_name='' THEN null ELSE @Cus_name END  ,
Cus_phone =  CASE when @Cus_phone='' THEN null ELSE @Cus_phone END,
Cus_address = CASE when @Cus_address='' THEN null ELSE @Cus_address END

WHERE Cus_id = @Cus_id
1
#4
TareqVB كتب:

 

السلام عليكم

 

اما ان تستخدم الشرط if  قبل التعديل مثل

 

if @Cus_name =''

set @Cus_name  = null

 

او باستخدام case  في جملة التعديل

UPDATE Customers SET
Cus_name = CASE when @Cus_name='' THEN null ELSE @Cus_name END  ,
Cus_phone =  CASE when @Cus_phone='' THEN null ELSE @Cus_phone END,
Cus_address = CASE when @Cus_address='' THEN null ELSE @Cus_address END

WHERE Cus_id = @Cus_id

 

شكرا جزيلا اخى الفاضل

 

ولكن هل من الممكن توضيح كيف يمكن إستخدام تلك الطريقة مع Insert Into ؟؟

#5

جرب هذا

insert into Customers (Cus_name ,Cus_phone ,Cus_address )
select  
	CASE when @Cus_name='' THEN null ELSE @Cus_name END  ,  
	CASE when @Cus_phone='' THEN null ELSE @Cus_phone END, 
	CASE when @Cus_address='' THEN null ELSE @Cus_address END
#6

وكما ذكر الاخ كريم ونفس الشيء لادخال قيم دون استعلام

insert into Customers (Cus_name   )
 values (
    CASE when @Cus_name='' THEN null ELSE @Cus_name END   )
    
    
    او بطريقة NULLIF
    
    insert into Customers (Cus_name   )
 values (
       NULLIF(@Cus_name,'')   )

تم تعديل هذه المشاركة بواسطة TareqVB في 28 سبتمبر 2013 في 06:47

#7

شكرا اخي TareqVB

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…