Sql server SQL Server:在CASE语句中设置变量
是否可以在case语句中设置变量?我的代码不起作用。谢谢大家Sql server SQL Server:在CASE语句中设置变量,sql-server,tsql,Sql Server,Tsql,是否可以在case语句中设置变量?我的代码不起作用。谢谢大家 CREATE PROCEDURE spReport @q1 INT, @q2 INT AS BEGIN -- Dates for the 2 different quarters to be viewed DECLARE @StartDateQ1 DATETIME DECLARE @EndDateQ1 DATETIME DECLARE @StartDateQ2 DATETIME DECLARE @EndDateQ2 DATETIME
CREATE PROCEDURE spReport
@q1 INT,
@q2 INT
AS
BEGIN
-- Dates for the 2 different quarters to be viewed
DECLARE @StartDateQ1 DATETIME
DECLARE @EndDateQ1 DATETIME
DECLARE @StartDateQ2 DATETIME
DECLARE @EndDateQ2 DATETIME
SELECT
CASE @q1
WHEN 1 THEN SET @StartDateQ1 = '20130401'
END
你可以用
SET @StartDateQ1 = CASE @q1
WHEN 1 THEN '20130401'
END
根据大小写
表达式设置单个变量的值
如果您的实际逻辑更复杂(例如,需要在条件中设置多个变量),请查看If。。。否则
CASE
是一个表达式,而不是一个控制流构造。下面是使用IF语句解决此问题的另一种方法:
IF @q1 = 1
BEGIN
SET @StartDateQ1 = '20130401'
END
在T-SQL中,
CASE
是一个返回值的表达式-在CASE
语句中不能有代码块。看看Martin的答案如何处理。