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 Server 2005 和 2008 上都有一个存储过程,其中上面的代码是
它返回一个VARCHAR(MAX)
由逗号分隔的数字。
现在这个返回值超过了 600k 个字符。如果我在 SQL Server 2005 上执行此操作,它的工作时间为 50%,@HostIDs
始终填充并@UpdateSQL
使用正确的值生成并执行。
在 SQL Server 2008 上,@HostIDs
已填充但@UpdateSQL
始终为 NULL
这让我非常奇怪
任何人都可以阐明我的奇怪问题吗?