SQL存储过程中IN子句参数中的VARCHAR

时间:2017-08-01 19:15:40

标签: php sql sql-server

我在PHP中有这个字符串:

$temp = 'one, two, three, four, five, six';

我以这种方式调用SQL Server存储过程:

$tsql_callSP = "{call spThisIsCalled($temp)}";

我有以下作为SQL服务器中的存储过程并且存在soome问题,我不知道是什么:

CREATE PROC spThisIsCalled(
    @serverVar VARCHAR(100)
)
AS
BEGIN
    SELECT Something, @serverVar
    FROM (  .............
            WHERE
                (........ IN
                ([@serverVar]))
                AS PVT;
END

存储过程中的@serverVar是列名,但由于某些问题,它在某种程度上无法正常工作。请帮忙。

1 个答案:

答案 0 :(得分:0)

我认为这是不可能的。您可以尝试将所有代码移动到变量然后执行,例如

CREATE PROC spThisIsCalled(
    @serverVar VARCHAR(100)
)
AS
BEGIN

declare @sqlCommand varchar(max) = 
'SELECT Something, ' + @serverVar +  ' FROM (  .............
            WHERE
                (........ IN
                (' +  @serverVar + ' ]))AS PVT; ' ;

EXEC SP_EXECUTESQL @sqlCommand
End