我只是想知道是否可以在存储过程中使用变量。例如:
CASE @productType
WHEN 1 THEN
DECLARE @table = ‘products1’
WHEN 2 THEN
DECLARE @table = ‘products2’
END
SELECT * FROM @table;
显然这不起作用,只是想知道是否有办法实现这一目标。
答案 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");