Select @Script returns NULL 而不是@Script SQL

Select @Script returns NULL instead of @Script SQL

我在处理以下查询时遇到了一些问题:

DECLARE
    @Type TINYINT = NULL,
    @ErrorDescription VARCHAR(MAX) = NULL

SELECT @Type

DECLARE @Script VARCHAR(MAX) = ''

SET @Script =
    'DECLARE @Type TINYINT = ' + CAST(@Type AS VARCHAR(10)) +'
    DECLARE @ErrorDescription VARCHAR(MAX) = ' + CASE WHEN @Type = 1 THEN '''' + @ErrorDescription + '''' ELSE 'NULL' END 

SELECT @Script

我的 @Type 将是以下三个值之一:Null、0、1

Null - 开始进程 0 - 成功的过程 1 - 错误进程

对于 0 我得到结果:

@Type
0
@Script
DECLARE @Type TINYINT = 0 DECLARE @ErrorDescription VARCHAR(MAX) = NULL

对于 NULL 和 1 我在 @Script 中得到 NULL

@Script
NULL

我需要 NULL 和 1 到 return @Script 的结果,就像 0 一样。

我检查了是否是 @TypeVarchar(10) 的转换问题,但没有效果。

我已经删除了撇号,但是 return 出现了错误或相同的结果。

我将 @ErrorDescription 更改为 'This is an error' 并且 return 编辑了 1 的正确结果但不是 NULL

提前致谢!

我在互联网上搜索过类似我的问题,但我看到一个 jQuery 问题和询问如何获得 NULL 结果的问题。

你可以把NULL换成'unknown'

的意思

当您将 unknown 连接到一个字符串时,结果也是 unknown(如果您将一个未知数量添加到一个已知数量,您现在就有一个未知数量)。您需要使用 IsNull()

尝试

+ CAST(isnull(@Type,'0') AS VARCHAR(10)) +