IN子句不使用存储过程

时间:2016-04-11 14:58:18

标签: sql sql-server stored-procedures

使用SQL Server - 2014。

我存储了proc,

CREATE PROCEDURE getRequest(
        @Id INT
       ,@ApiNo NVARCHAR(100)
       ,@RContent VARCHAR(max) out)
AS
BEGIN
    IF((@ApiNo != ''))
    BEGIN
        DECLARE @name VARCHAR(100)
        DECLARE @class VARCHAR(100)
        SET @name = (SELECT name FROM Student WHERE id = @Id)
        SET @class = CASE
                WHEN (
                        @name LIKE '%First%'
                       )
                    THEN 'FR'
                WHEN (
                        @name LIKE '%Second%'
                       )
                    THEN '''FR'',''TR'''
                WHEN (
                        @name LIKE '%Fourthd%'
                       )
                    THEN '''FR'',''BM'',''TR'',''KK'''
                ELSE 'TM'
                END
            SELECT RContent FROM School where Class IN (@class) AND Id = @Id 
            print 'This is a test' + @class
    END
END;

在这里我使用case设置@class,并使用IN来cheeking多个值。

eg: SELECT RContent FROM School where Class IN (@class) AND Id = @Id 

我使用print来正确查看我的@class变量。 我看到以下价值:这是一个测试' FR'' BM'' TR'' KK'

但它不起作用。如果我删除 Class IN(@class)。它会起作用,而如果我添加它并没有按预期工作。

0 个答案:

没有答案