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