douren7179 2017-08-01 19:15
浏览 162

SQL存储过程中的IN子句参数中的VARCHAR [重复]

This question already has an answer here:

I have this string in PHP:

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

I call the SQL server Stored Procedure in this way:

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

I have the following as the Stored Procedure in SQL server and there is soome problem, I don't know what:

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

The @serverVar in the Stored Procedure are the column names but somehow it is not working due to some problem. Please help.

</div>
  • 写回答

1条回答 默认 最新

  • douxia6163 2017-08-01 19:26
    关注

    I figured it is not possible. you can try to move all your code to a variable and then execute, some thing like

    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
    
    评论

报告相同问题?