2012-11-05 117 views
1

我正在爲C++編寫SQL Server的擴展存儲過程。可以使用srv_paramsetoutput()來設置nvarchar(max)或varchar(max)嗎?

用戶可以提供我可以使用srv_paramsetoutput()設置的OUT參數。但是,當我嘗試設置TEXT,VARCHAR(max)或NVARCHAR(max)時,這似乎總是失敗。請注意,VARCHAR(max)在內部被稱爲SRVBIGVARCHAR。

是否有一個常見的錯誤,我可以做或者是這些數據類型無法訪問xproc當用作輸出參數?

+0

擴展的過程已被棄用,並且永遠不會支持新的MAX類型。使用CLR程序。 –

+0

我比C++更愛C#(當然),但安裝經驗更適合xprocs。此外,還有很多第三方軟件依賴於他們,希望這些軟件能夠存在幾年。 – Robin

+0

你怎麼能說XP安裝比組裝好? * XP不包含在db *中。他們沒有備份/恢復,他們在故障轉移時丟失了! –

回答

0

擴展存儲過程可以返回的最大長度值是8000(對於Varbinary或Varchar)或4000(對於nvarchar)。

+0

這個問題是關於在xprocs中使用'max'數據類型,而不是基本字符串類型可以擁有的最大長度。 – Robin

+0

我試過這樣做,但它似乎不被支持,即使它是在C/C++頭文件中定義的。 –

+0

是的,這就是我發現的。我只是忍受它,並改變了SQL端使用nvarchar(n)而不是nvarchar(max),然後決定將代碼完全移出SQL Server! – Robin