PDA

View Full Version : پارامتریک کردن آیتم های مقابل کلمه ی کلیدی "IN"



Behrouz_Rad
سه شنبه 20 تیر 1385, 22:38 عصر
سلام علیکم!
عرض شود که SP ی زیر در برنامه عمل نمی کنه:


CREATE PROCEDURE dbo.spDeleteRecord
(
@delExp nvarchar(3000)
)
AS
DELETE FROM myTable WHERE ID IN ('@delExp')
GO


اما معادل این SP به شکل:


Delete From myTable Where ID IN (5,6,7,8)

در برنامه به خوبی جواب میده!
پارامتر SP هم به عنوان نمونه به شکل:


5,6,7,8

به SP پاس داده میشه.
نکته ی مضاف اینکه، این SP در صورتی که تنها یک مقدار در جلوی عبارت "IN" ذکر بشه به خوبی کار می کنه اما برای بیش از یک مقدار عملی انجام نمیشه.

با تشکر.

majid_afra222
چهارشنبه 21 تیر 1385, 05:56 صبح
سلام
متاسفانه این مشکل رو منم دارم، یا n بار رویه رو اجرا کن، یا به این شکل بنویس :


DECLARE @delExp NVARCHAR(1000)
SET @delExp = '''CA'', ''IN'''
DECLARE @strDel NVARCHAR(4000)
SET @strDel = 'SELECT * FROM authors WHERE state IN ('+@delExp+')'
PRINT @strDel
EXEC(@strDel)

Behrouz_Rad
چهارشنبه 21 تیر 1385, 07:43 صبح
نظر دیگه ای؟
البته فکر می کنم امکان پاس داده پارامتر به صورت آرایه در SQL Server 2005 وجود داشته باشه، اما در حال حاضر، سیستم با SQL Server 2000 کار می کنه...

Kamyar.Kimiyabeigi
یک شنبه 08 مرداد 1385, 07:40 صبح
جناب آقای بهروز راد همانطور که آقای افرا نوشتن شما باید از Dynamic TSQL استفاده کنین که در واقع Script خود شما هم درست بوده منتهی باید داخل EXECUTE قرار بگیره