SET @sql = 'Declare ChildTableMigrator CURSOR FOR select ['+@FieldName+'] , ['+@FieldName+'Alias] from [' + @SourceTable + '].[dbo].[Port] where [' + @SourceTable + '].[dbo].[Port].[' + @FieldName + '] IS NOT NULL AND [' + @SourceTable + '].[dbo].[Port].[' + @FieldName + '] !='''
PRINT @sql
exec sp_executesql @sql
您好,
如何使用NULL
动态查询检查EMPTY
和sql
? ,根据EMPTY
检查
@FieldName + '] !='''
它消除了错误
字符串''后面的未闭合引号。
如何克服这个问题?
答案 0 :(得分:1)
您需要替换
@FieldName + '] !='''
带
@FieldName + '] !='''''.
在字符串中使用时,需要转义引号。在原始语句中,您只转义了一个引号,导致只有一个引号的字符串。
但是你可以通过使用参数化的sql
做得更好 @FieldName + '] !=@EmptyField
exec sp_executesql @sql, N'@EmptyField VARCHAR(32)', ''
答案 1 :(得分:1)
使用if()判断。例如
set @sql="Declare ChildTableMigrator CURSOR FOR select "
if(@FieldName!=null)
begin
set @sql=@sql+"['"+@FieldName+"']";
end
.....
PRINT @sql
exec sp_executesql @sql