EXEC SP_EXECUTESQL
@DynamicSQL
, N'@HostIDs VARCHAR(MAX) OUTPUT'
, @HostIDs OUTPUT;
PRINT @HostIDs;
SELECT @HostIDs AS HostIDs;
SET @UpdateSQL = '
EXECUTE [dbo].[usp_Win7_HostUpdater_NEW]
@HostID = ''' + @HostIDs + ''' ,
@PackageID = ''' + @PackageID + ''' ,
@MigrationFlag = ''' + @MigrationFlagID + ''' ,
@Manufacturer = ' + @Manufacturer + ' ,
@Product = ' + @Product + ' ,
@Version = ' + @Version + ' ,
@Reason = ' + @Reason + ' ,
@Contact = ' + @Contact + '
';
SELECT @UpdateSQL AS UpdateSQL;
PRINT @UpdateSQL;
EXEC(@UpdateSQL)
END
我已经在上面的代码是SQL服务器:执行动态SQL的帮助,请
最后一部分既是SQL Server 2005和2008上的存储过程返回号码VARCHAR(MAX)
用逗号分隔。
现在这个返回值大到600k个字符以上。如果我在SQL Server 2005上执行此操作,它的工作时间为50%,总是填充@HostIDs
,并使用正确的值生成@UpdateSQL
并执行。
在SQL Server 2008中,@HostIDs
填充但@UpdateSQL
始终是NULL
这weirding我出极大
谁能也许阐明我奇怪的问题一些轻?
也许其中一个变量是'NULL'。你测试了所有这些吗? –
为什么你需要首先创建'@ UpdateSQL'? (它看起来像是SQL注入的目标。)为什么你不只是将命令作为实际的语句? – freefaller