如何在存储过程中使用变量

时间:2015-12-22 01:14:48

标签: sql sql-server

我只是想知道是否可以在存储过程中使用变量。例如:

    CASE    @productType
    WHEN 1 THEN
    DECLARE @table = ‘products1’
    WHEN 2 THEN
    DECLARE @table = ‘products2’
END

SELECT * FROM @table;

显然这不起作用,只是想知道是否有办法实现这一目标。

2 个答案:

答案 0 :(得分:6)

是的,有办法。您可以使用动态sql。

DECLARE @productType INT = 1
DECLARE @table  NVARCHAR(MAX)
DECLARE @sql    NVARCHAR(MAX)

SELECT @table = 
    CASE @productType
        WHEN 1 THEN 'products1'
        WHEN 2 THEN 'products2'
    END

SELECT @sql = 'SELECT * FROM ' + QUOTENAME(@table);

EXEC(@sql)

答案 1 :(得分:2)

您只需使用if else if语句:

sp_executesql

或使用DECLARE @productType INT = 1; DECLARE @table NVARCHAR(MAX); DECLARE @sql NVARCHAR(MAX); SELECT @table = CASE @productType WHEN 1 THEN 'products1' WHEN 2 THEN 'products2' END; SELECT @sql = 'SELECT * FROM ' + QUOTENAME(@table); EXEC sp_executesql @sql;

var tokens = AN_EMPTY_STRING.split("ANY_REGEX");