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

كيفية استثناء بعض المتغيرات

مغلق
بدأه jooorj في 17 فبراير 2007 · 12 رد · 972 مشاهدة · في قواعد بيانات Microsoft SQL Server
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

سؤال كيف يمكن بال Stoered procedure استثناء بعض المدخلات وعدم استخدامهم بال Update في حالة عدم ارسالهم للستورد بروسيجر

مثال

عندي امر Update

اريد لمن ما ارسل له ال myAddress مثلا لا يعمل له Update ويستثنيه من التعديل

ارجو الافادة وشكرا

موقوف من المشاركة لقلة الأدب

============================

#2

لا تستخدمه فى عبارة ال Update و بالتالى سيتم تجاهله فى هذه العبارة

Create Procedure MySP
@MyName NVarchar(50),
@MyAddress NVarchar(50)
as Insert Into MyTable (MyName,MyAddress) Values (@MyName,@MyAddress)

Update MyTable
Set MyName = @MyName Where MyName = N'طارق'

Go

فى هذا المثال سيقوم بادخال بيانات فى الحقلين MyName و MyAddress فى عبارة ال Insert و سيتجاهل التعديل فى حقل ال MyAddress فى عبارة ال Update

Technical Lead Developer

My LinkedIn Profile

اللهم قنى شر الجهل و الجهلاء

( اقْتَرَبَ لِلنَّاسِ حِسَابُهُمْ وَهُمْ فِي غَفْلَةٍ مَّعْرِضُونَ ) {الأنبياء:1}

#3

لا يا خي

انا عندي احيانا يلزمني ان أعدل بحقل MyAddress ولكن حسب المستخدم من الفورم الاساسي حيث استخدم فور بالسي شارب واحيانا يلزمني اعدل ذلك الحقل ولكن بشرط مثلا أن يحدد خيارا بالفورم مثل ان يحدد انتقل العنوان الى :-----------

وفي هذه الحال أعدل ذلك الحقل وفي غيرها اعدل فقط الحقول الاساسية كالاسم والرقم وليس العنوان.. فهو مستثنى

موقوف من المشاركة لقلة الأدب

============================

#4

?

موقوف من المشاركة لقلة الأدب

============================

#5

أكيد لو عندنا جدول فيه خمس حقول مثلا لم نقوم بعمل اجراء لتعديل كل حقل علي حده

الحل الذي اعتمد عليه في اغلب الحالات هو وجود اجراء واحد يقوم بتعديل كل الحقول

و لكن في حاله تعديل حقول دون حقول امرر الحقول التي لا نريد تعديلها بقيمها القديمه اي اعدل كل حقل اما بقيمه جديده او بقيمته القديمه

حسب معلوماتي تعديل حقل او أكثر هذا لا يضر بالاداء

لان عمليه التعديل عباره عن حذف + اضافه

اي حذف السجل القديم و اضافه السجل بالتعديلات الجديده

#6

ياريت لو في طريقة لتعديل حقل واحد من سجل مع الاحتفاظ بالقيم السابقة وتعديلها حسب سجل اخر معروف ال ID له

موقوف من المشاركة لقلة الأدب

============================

#7

اتمنى ان اكون فهمت ما تقصد لكي يكون ما سأكتبه مفيدا:

بأمكانك تمرير بارميترات في البروسيجر لكن مع default value وهاك المثال التالي :

CREATE PROCEDURE MyProc(@ID int=0,@PP varchar(20)=null) AS

if @ID=0
update student set adress='lablaba' where ID=@ID
else 
select * from student
GO

ال1ي اريد ان اقوله في المثال السابق ان بأمكانك تمرير البارمتيرات

@PP و @ID وبأمكانك ان لا تمررهم من برنامجك وبهذا الشكل فأن السكول سيأخذ القيم الافتراضية فأذا اردت ان تعمل رن للاجراء السابق في query analyzer

exec MyProc

exec MyProc 2

exec MyProc 2,'lalalala'

كل من الاوامر السابقة صحيحة وبذلك يمكنك استخدام هذه الخاصية لكي تمرر البارمترات عند الضرورة

والله ولي التوفيق

#8

لأ يا اخي لايمكن

لانه كما تفضلت فسيتم تعديل القيم القديمة بالقيم الافتراضية وهو غير مطلوب ؟؟ مما يؤثر على البيانات

موقوف من المشاركة لقلة الأدب

============================

#9

هل من مجيب ؟:(

موقوف من المشاركة لقلة الأدب

============================

#10

كيف اقدر استثني بعض المتغيرات او اعمل ايشئ اين الخبراااااااااااااااااء

موقوف من المشاركة لقلة الأدب

============================

#11

?

موقوف من المشاركة لقلة الأدب

============================

#12

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

هل هذا الكود يفيدك أخي الكريم ..؟؟

Create Procedure MySP
	@ID		Int, 
	@MyName NVarchar(50) = Null,
	@MyAddress NVarchar(50) = Null
AS

Declare 
	@Old_Name NVarchar(50) ,
	@Old_Address NVarchar(50) 

Select @Old_Name = Name, @Old_Address = Address Where ID = @ID

-- إذا لم يمرر له قيمة خذ قيمته المخزنة الأصلية
If @MyAddress Is Null
	Set @MyAddress = @Old_Address 

-- إذا لم يمرر له قيمة خذ قيمته المخزنة الأصلية
If @MyName Is Null
	Set @MyAddress = @Old_Name 


Update MyTable
	Set Name = @MyName, Address = @MyAddress 
	Where ID = @ID


Go

بالتوفيق .. :)

تم تعديل هذه المشاركة بواسطة imadouzoun في 4 مارس 2007 في 02:04

دروس و كتب مفيدة----------------------كتيب الإجرائيات المخزنةتعرف على اللغة Transact SQL <<-->> كتيب عن تنصيب قواعد البيانات Sql Server باللغة العربية كتيب عن إنشاء قواعد البيانات في SQL Server باللغة العربية <<-->> درس مع الأمثلة عن المؤشرات و التعامل معها في الـ T-SQLالعبارات الشرطية و الحلقات في T-SQL <<-->> شرح لبعض الـ Extended Stored Procedure استخدام مكتبات الـ Dot Net الخاصة بك في الـ Sql Server 2005 <<-->> التعامل مع المصفوفات من خلال الـ T-SQLتعابير الجداول الشائعة في SQL Server 2005 <<-->>الاتصال بالأداة SQL Server Management Studioحلول سريعة و لمحات برمجية --------------------------------التصدير إلى إكسل : طريقة أولى : طريقة بسطر واحد من الكود <<-->> طريقة ثانية : طريقة تحتاج إنشاء إجرائية مخزنةً تجهيز بيانات جدول بالصيغة XML تمهيداً لحفظها كملف <<-->> تصدير البيانات إلى ملفات نصية برمجياً إغلاق جميع الإتصالات المفتوحة بقاعدة بيانات محددة .. تمهيداً لاسترجاعها أو حذفها <<-->> الاستعلام بناء على وقت مخزن بالصيغة العربية ضمن حقل نصي ..حذف السجلات المتكررة و إبقاء عدد محدد منها في جدول.. <<-->> أسرع طريقة لحذف سجلات جدول كيف احصل على اسم جهازي والباسوورد باستخدام T-SQL <<-->> حشر أنواع الصور المختلفة في حقل من نوع Image باستخدام إجرائية مخزنة .كيف تعرف أنواع الصور المخزنة في حقل من نوع Image .. <<-->> إجرائيات مخزنة ببارامترات ديناميكية مفيدة جداً للاستعلامات استخدام رقم الحقل بدلاً من الإسم في عبارات الإستعلام <<-->> من هو أضخم الجداول في قاعدة بياناتي ؟معرفة زمن تنفيذ الإجرائيات ( لتختار الطريقة الأسرع بين إجرائياتك المخزنة ) <<-->> التعامل مع الـ Rules برمجياً الحصول على آخر صف في الجدول <<-->> قراءة ملفات XML باستخدام T-SQL برمجياً (مثال مرفق)سحب بيانات ملف إكسل إلى الـ SQL Server <<-->> تشفير النسخة الاحتياطية بكلمة مرور <<-->> التخلص من البيانات المكررة <<-->> حل مشكلة التاريخ الهجريDifferential Backup بالتعريف---------- لا إله إلا الله .. محمد رسول الله

أخوكم في الله..  Imad Ozone

#13

شكرا جزيلا

موقوف من المشاركة لقلة الأدب

============================

هذا الموضوع مغلق.

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

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

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

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

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