sirvan-me
چهارشنبه 20 دی 1391, 12:33 عصر
سلام به همه ی دوستان ... چطور می تونم پارامتری رو از VS با استفاده از زبان #C به SQL برای کار با SP زیر ارسال کنم :
SELECT * FROM [Table] wHERE ID IN (@Param)
کوئری بالا رو همینطوری نوشتم که متوجه منظورم بشین ... حالا من می خوام یه سری عدد به طور مثال 9 تا رو به صورت پارامتری به این SPارسال کنم ...
sirvan-me
پنج شنبه 21 دی 1391, 20:41 عصر
هم اکنون نیازمند به یاری سبزتان هستم !!!!!!
Mahmoud.Afrad
پنج شنبه 21 دی 1391, 21:49 عصر
یک تابع Table-Valued به صورت زیر ایجاد کنید:
CREATE FUNCTION [dbo].[fnSplitCSV] ( @NumberList varchar(max))
RETURNS @SplitList TABLE ( ListMember INT )
AS
BEGIN
DECLARE @Pointer int, @ListMember varchar(25)
SET @NumberList = LTRIM(RTRIM(@NumberList))
IF (RIGHT(@NumberList, 1) != ',')
SET @NumberList=@NumberList+ ','
SET @Pointer = CHARINDEX(',', @NumberList, 1)
IF REPLACE(@NumberList, ',', '') <> ''
BEGIN
WHILE (@Pointer > 0)
BEGIN
SET @ListMember = LTRIM(RTRIM(LEFT(@NumberList, @Pointer - 1)))
IF (@ListMember <> '')
INSERT INTO @SplitList VALUES (convert(int,@ListMember))
SET @NumberList = RIGHT(@NumberList, LEN(@NumberList) - @Pointer)
SET @Pointer = CHARINDEX(',', @NumberList, 1)
END
END
RETURN
END
کار این تابع split کردن مقادیر هست.
به اینصورت در SP استفاده کنید:
CREATE PROCEDURE [dbo].[sp_test] ( @NumberList nvarchar(max) )
AS
BEGIN
SET NOCOUNT ON;
SELECT * FROM data WHERE data.id in (SELECT * FROM dbo.fnSplitCSV (@NumberList) )
END
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.