2014-01-22 36 views
2

這是我的存儲過程:如何將兩個值傳遞給SQL Server存儲過程中的單個參數?

ALTER PROC [dbo].[Details] 

@name nvarchar(20) 

AS 

    BEGIN 

SELECT Id FROM Client WHERE name in (@Name) 

END 

如果我傳遞一個值輸出來:

喜歡我想過去:

EXEC [dbo].[Details] 'Monday' 

兩個值篩選:

如果我通過兩個值輸出不是來:

爲了得到這個以何種方式我需要發送參數 目前我傳遞了兩個參數,像這樣

EXEC [dbo].[Details] ''Monday','Wipro''; 

感謝ü提前

+1

理想情況下,使用自然*支持多個值(即表值參數或XML)的數據類型傳遞多個參數。或者,在這裏查找200億個問題中的一個,查看在SQL中以逗號分隔字符串。 –

回答

3

您可以嘗試使用此代碼從您的參數中提取表格:

declare @sql nvarchar(max)= 
'abc,def,ghi,jkl' 
set @sql = replace(@sql,',','''),(''') 
set @sql = 'select * 
from (values ('''[email protected]+''') 
) a (Value) 
' 
PRINT(@sql) 
exec sp_executesql @sql 

然後在IN條件下使用執行結果。您可以使用任何分隔符配置此部分。

1

試試這個:

ALTER PROCEDURE dbo.[Details] 
    @name NVARCHAR(30) 
    AS 
     DECLARE @Sql VARCHAR(MAX) 
     SET @name = REPLACE(@name,',',''',''') 
     SET @Sql = 'SELECT 
        * 
        FROM table1 
        WHERE username IN 
        (
         ''' + @name + ''' 
        )' 
     EXEC (@Sql) 
     EXEC [dbo].[Details] 'mohan,prashant' 
+0

我傳遞值從單個參數從C#方法存儲過程在某些情況下,我的值​​可能會增加10,所以我不能創建10個參數 – Raj

相關問題