我有大的查詢 所以我不能使用鏈接的服務器在生產中的規則。 我通過一個varchar(max)
這有8000多個字符。sp_executesql或exec(@var)太長。最大長度是8000
但sp_executesql
不支持超過8000個字符,那麼我如何執行我的字符串?
我有大的查詢 所以我不能使用鏈接的服務器在生產中的規則。 我通過一個varchar(max)
這有8000多個字符。sp_executesql或exec(@var)太長。最大長度是8000
但sp_executesql
不支持超過8000個字符,那麼我如何執行我的字符串?
nvarchar(max)
應該可以在SQL Server 2008或更高版本上工作。如果您使用的是前一個版本,你可能需要將查詢拆分成多個變量:http://social.msdn.microsoft.com/Forums/sqlserver/en-US/c26b1e1e-5900-43da-b462-02b1550bcfc3/how-to-use-sql-string-variable-larger-than-4000-character-in-sql-server-2005-stored-procedure
請問這項工作?:
declare @sql nvarchar(max) set @sql = N'select' + CONVERT(NVARCHAR(MAX),REPLICATE(' ', 8000)) + ' ''Above 8000 character limit test''' exec sp_executesql @sql
問題是不是與@var或類型nvarchar(最大)的問題是與sp_executesql,它只支持8000個字符 – angel
嗯...下面的代碼在SQL中工作嗎? 編輯:有一些錯誤粘貼在這裏的代碼。我會通知你。 – Ant
哪個代碼?因爲它聲明瞭@x nvarchar(max)set @ x ='select 1 number union all select 2 as number union all select 3 as number'(等到這得到8000個以上的字符),這個工作如果@ x小於8000,但是當它超過8000時,這是行不通的,我得到的「太長了,最大長度是8000」 – angel
你有沒有嘗試聲明類似
declare @var_1 nvarchar(4000);
declare @var_2 nvarchar(4000);
.
.
.
declare @var_n nvarchar(4000);
所以你做這樣的事情
exec(@var_1 + @var_2 + ....+ @var_n)
希望這將幫助你
問題不在於變量,問題在於Exec顯然只能接收到8000個字符,那麼如果我需要執行一個更大的字符串,我該如何執行? – angel
這真的很舊我不知道是否仍然相關,但看看http://sqlmag.com/stored-procedures/character-limitation-spexecutesql –
入住這 http://stackoverflow.com/questions/4833549/nvarcharmax-still-being-truncated – Anjali
問題不是@var或類型爲nvarchar(最大)的問題是sp_executesql,它只支持8000個字符 – angel
如果限制在存儲過程參數中,您可能需要創建視圖來移動查詢之外的某些語句。 – Pekka