【发布时间】:2018-07-27 21:57:30
【问题描述】:
我有一个这样的存储过程:
DECLARE @comando as varchar(5000)
SET @comando = 'DTEXEC /FILE \"" /de "pass" /CHECKPOINTING OFF /REPORTING EW'
SELECT @comando = @comando + ' /SET "\"\Package.Variables[' + Replace(str_NombreVariable,'User::','') + '].Value\"";'
+ CASE WHEN str_NombreVariable LIKE '%v_sCadenaConexion%'
THEN '"\"'+ str_ValorVariable +'\""'
ELSE str_ValorVariable +
CASE WHEN str_NombreVariable LIKE '%v_sRutaArchivo%'
THEN @v_sRutaArchivo + '.csv\""'
ELSE ''
END
END + ''
from [Catalogo].[catVariablesEtl] where IdPaquete = @idPaquete
我想为另一个案例添加另一个验证,所以我尝试:
SELECT @comando = @comando + ' /SET "\"\Package.Variables[' + Replace(str_NombreVariable,'User::','') + '].Value\"";'
+ CASE WHEN str_NombreVariable LIKE '%v_sCadenaConexion%'
+ CASE WHEN str_NombreVariable LIKE '%v_sRutaArchivo%'
THEN '"\"'+ str_ValorVariable +'\""'
ELSE str_ValorVariable +
CASE WHEN str_NombreVariable LIKE '%v_sRutaArchivo%'
THEN @v_sRutaArchivo + '.csv\""'
ELSE ''
END
END + ''
from [Catalogo].[catVariablesEtl] where IdPaquete = @idPaquete
我明白了
“来自”附近的语法不正确
我做错了什么?如果我添加另一个CASE,我需要添加另一个 THEN 句吗?问候
作为缺少声明的评论,我将其更改为:
更新:
SELECT @comando = @comando + ' /SET "\"\Package.Variables[' + Replace(str_NombreVariable,'User::','') + '].Value\"";'
+ CASE WHEN str_NombreVariable LIKE '%v_sCadenaConexion%'
THEN '"\"'+ str_ValorVariable +'\""'
+ CASE WHEN str_NombreVariable LIKE '%v_sRutaArchivo%'
THEN'"\"' +str_ValorVariable +''
ELSE str_ValorVariable +
CASE WHEN str_NombreVariable LIKE '%v_sRutaArchivo%'
THEN @v_sRutaArchivo + '.csv\""'
ELSE ''
END
END
END + ''
from [Catalogo].[catVariablesEtl] where IdPaquete = @idPaquete
但是当我进行选择时,它会返回 NULL 值。为什么会这样?
【问题讨论】:
-
您有三个
CASE语句和两个END关键字。 -
我更新了我的问题,你能看看吗? @bjones
-
您可能会得到空值,因为一个或多个列具有空值。任何加上
NULL将导致NULL。也许您需要在列周围使用ISNULL()以查看导致问题的原因。 -
我认为问题是因为
Case没有Else子句或者它不匹配?@bjones
标签: sql sql-server stored-procedures