当前位置:  开发笔记 > 数据库 > 正文

动态SQL - 为什么变量保持为空

如何解决《动态SQL-为什么变量保持为空》经验,为你挑选了1个好方法。

我有动态sql的问题(是的只有一个;))

在内存存储过程中,我声明了一个这样的局部变量

DECLARE @cmd nvarchar(max)在代码的后面我有这个行,我接收了很多输入参数(抱歉这个混乱没有成功组织它):

SET @cmd = 'INSERT INTO dbo.' + @ArchiveTableName + '(' + @ArchiveFieldsName + ',' + @ArchiveEntityMainIdentifierField + ')
    SELECT ' + @EntityFieldsName + ',' + '' + @EntityMainIdentifierField + '' +
       ' FROM [' + @OrganizationName + '].[dbo].[' + @EntityName + '] ent
        left join dbo.' + @ArchiveTableName + ' arc on arc.' + @ArchiveEntityMainIdentifierField + ' = ent.' + @EntityMainIdentifierField + '
        where ent.' + @EntityMainIdentifierField + ' = ''' + @ParentId + ''' and arc.' + @ArchiveEntityMainIdentifierField + ' is null'

调试之后,我发现了一些奇怪的东西.运行后,@ cmd保持为空.

任何人都可以告诉我为什么会发生这种情况?



1> HoneyBadger..:

我打赌你的其他变量之一是NULL.'Something' + NULL = NULL.你可以使用CONCAT(sql server 2012+),它将NULL变成一个空字符串.更好的是使用COALESCE(sql server 2008+)(并确保基本变量不是NULL).

推荐阅读
LEEstarmmmmm
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有