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

طلب مساعدة في stored PROCEDURE

بدأه القيروان في 14 مايو 2011 · 10 رد · 682 مشاهدة · في قواعد بيانات Microsoft SQL Server
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

اريد من الاخوة لو يساعدوني في تصحيح stored PROCEDURE

الفكرة كالتالي اني عندما اضيف منتج بكامل بياناته من اسم المنتج والمنتج وسعر وكمية اريد stored PROCEDURE ان يفعل الاتي يقوم بعمل لوب علي كل المنتجات ومن ثم يقارن كل اسم منتج ومنتج مع البيانات القادمة من الفورم فإذا وجد تطابق يقوم بتعديل خانة الكمية فقط فيجمع عليها الرقم القادم في خانة الكمية من الفورم و اذا لم يجد سوف يضيف صف جديد

ALTER PROCEDURE [dbo].[It_data]
@id int , @name varchar(50) , @producer varchar(50) , @kind varchar(50) ,@price money ,@notes varchar(150),@quantity INT
AS
DECLARE @cout INT
declare @count int
SET @count=(select COUNT(id) from Item_data)
	while(@count>0)
	begin
	if(@name=(SELECT [name] FROM Item_data) AND @producer=(SELECT producer FROM Item_data))
	BEGIN
	UPDATE Item_data
	SET
		Quantity =+@quantity
	END
    ELSE
		BEGIN
				insert into Item_data(id,[name],producer,kind,price,notes,Quantity) values (@id,@name,@producer,@kind,@price,@notes,@quantity)

		END
		set @cout=@count-1
	end

	RETURN

في النهاية اكون شاكر و باعتذار اني هتعبكوا معايا

#2

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

أعتقد لو استخدمت

if not exists

قبل جملة Select يكون أفضل

certifiedj.jpg

 

 

Image Hosted by ImageShack.us
#3

ممكن اخي تقوم بتعديل سؤالك باضافة مثال بسيط يمكن من خلاله فهم الاشكال

logo1.png تطبيق طمأنينة ، نسخة بيتا على أندرويد

عبدالله الشمّري - Al-Shammari

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

#4
  UPDATE Item_data
        SET
                Quantity =+@quantity
        END

أخي هنا يجب عليك تحديد السجل المراد تعديل بياناته وإلا حيتم تعديل كل البيانات

اقتباس
if(@name=(SELECT [name] FROM Item_data) AND @producer=(SELECT producer FROM Item_data))

هنا أيضا يجب تحديد السجل المراد المقارنه معاه لازم تعمل where أو تستخدم Exists

فلسطين .. سوريا ..بورما ......وماذا بعد ؟!

سابقا

medo_programming

موقعي : www.alkhayat-it.com

مواضيع مهمه

-----------------------------------------------:

تعلم كل شىء عن الTriggers

#5

الشكر الجزيل علي المساعدة ولكن لم يعمل ايضا

التصحيح الجديد هل هو صحيح

ALTER PROCEDURE [dbo].[It_data]
@id int , @name varchar(50) , @producer varchar(50) , @kind varchar(50) ,@price money ,@notes varchar(150),@quantity INT
AS
DECLARE @cout INT
declare @count int
SET @count=(select COUNT(id) from Item_data)
	while(@count>0)
	begin
	if(@name=(SELECT [name] FROM Item_data WHERE [name]=@name) AND @producer=(SELECT producer FROM Item_data WHERE producer=@producer))
	BEGIN
	UPDATE Item_data
	SET
		Quantity =+@quantity WHERE [name]=@name AND producer=@producer 
	END
    ELSE
		BEGIN
				insert into Item_data(id,[name],producer,kind,price,notes,Quantity) values (@id,@name,@producer,@kind,@price,@notes,@quantity)

		END
		set @cout=@count-1
	end

	RETURN
#6
DECLARE @cout INT
 set @cout=@count-1

هذا المتغير ماهي وظيفته لانك مستخدمه ؟

=+@quantity WHERE [name]=@name AND producer=@producer

ماهي وظيفة +؟

فلسطين .. سوريا ..بورما ......وماذا بعد ؟!

سابقا

medo_programming

موقعي : www.alkhayat-it.com

مواضيع مهمه

-----------------------------------------------:

تعلم كل شىء عن الTriggers

#7
medo_Programming كتب:

DECLARE @cout INT
 set @cout=@count-1

هذا المتغير ماهي وظيفته لانك مستخدمه ؟

هو المفروض يبقي مفيش المتغير ده و المفروض اني بقلل كل مرة 1 عشان اللوب يكمل فلو حضرت تقولي شكل اللوب يبقي صح ازاي ابقي شاكر

=+@quantity WHERE [name]=@name AND producer=@producer

ماهي وظيفة +؟

اما الجزء ده فبما ان حصل وجود تطابق فعايز يعمل تغير في الكمية فقط فعايز اجمع علي الكمية اللي في قاعدة البيانات الرقم اللي جاي من الفورم

و شاكر علي مشاركات حضرتك ونعتذر لسا مبتدا

#8
جرب هذا الكود 

ALTER PROCEDURE [dbo].[It_data]
(@id int , @name varchar(50) , @producer varchar(50) , @kind varchar(50) ,@price money ,@notes varchar(150),@quantity INT)
AS

IF exists(SELECT [name] FROM Item_data WHERE [name]=@name and producer=@producer)
Begin
UPDATE Item_data
				SET
				Quantity =@quantity

				where name=@name and producer=@producer

End

Else 

 BEGIN
                  insert into Item_data values (@id,@name,@producer,@kind,@price,@notes,@quantity)

 END

 GO

تم تعديل هذه المشاركة بواسطة medo_Programming في 15 مايو 2011 في 18:03

فلسطين .. سوريا ..بورما ......وماذا بعد ؟!

سابقا

medo_programming

موقعي : www.alkhayat-it.com

مواضيع مهمه

-----------------------------------------------:

تعلم كل شىء عن الTriggers

#9
medo_Programming كتب:

جرب هذا الكود 

ALTER PROCEDURE [dbo].[It_data]
(@id int , @name varchar(50) , @producer varchar(50) , @kind varchar(50) ,@price money ,@notes varchar(150),@quantity INT)
AS

IF exists(SELECT [name] FROM Item_data WHERE [name]=@name and producer=@producer)
Begin
UPDATE Item_data
				SET
				Quantity =@quantity

				where name=@name and producer=@producer

End

Else 
 BEGIN
                  insert into Item_data values (@id,@name,@producer,@kind,@price,@notes,@quantity)

 END

 GO

سلمت يداك

انا شاكر جدا لحضرتك احب بس اعرف هل الفكرة اللي كانت عندي غلط ويا ريت حضرتك تشرحلي بس جزء الاختلاف بتاع exists

ربنا يبارك في حضرتك وانا اتشرفت انك رديت عليا

واحب بس اعرف اسم حضرتك

:)

#10
IF exists(SELECT [name] FROM Item_data WHERE [name]=@name and producer=@producer)

الجملة esxists بترجع True أو False تقوم بإرجاع قيمة True في حالة وجود ناتج لجملة الاستعلام التي بداخل الاقواس والعكس صحيح بالنسبة لFalse .

والكود اللي فوق معناه :

يقوم بالبحث في الجدول عن المنتج المدخل عن طريق المعامل (name- producer) وفي حالة وجود هذا المنتج يتم تعديل قيمة فقط غير ذلك يتم اضافة سجل جديد

إسمي محمد :) تشرفت بمعرفتك

1

فلسطين .. سوريا ..بورما ......وماذا بعد ؟!

سابقا

medo_programming

موقعي : www.alkhayat-it.com

مواضيع مهمه

-----------------------------------------------:

تعلم كل شىء عن الTriggers

#11
medo_Programming كتب:

IF exists(SELECT [name] FROM Item_data WHERE [name]=@name and producer=@producer)

الجملة esxists بترجع True أو False تقوم بإرجاع قيمة True في حالة وجود ناتج لجملة الاستعلام التي بداخل الاقواس والعكس صحيح بالنسبة لFalse .

والكود اللي فوق معناه :

يقوم بالبحث في الجدول عن المنتج المدخل عن طريق المعامل (name- producer) وفي حالة وجود هذا المنتج يتم تعديل قيمة فقط غير ذلك يتم اضافة سجل جديد

إسمي محمد :) تشرفت بمعرفتك

أنا الاسعد بمعرفة حضرتك اسمي معاذ

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