我有SQL Server 2000和我有了一個存儲過程@output
作爲varchar(8000)
和我有一個循環,保持結果連接成@output
,並在年底我做了select @output
SQL Server 2000 varchar(8000)截斷爲256?
我的問題是輸出長度被截斷只有前256個字符!其他字符(輸出)丟失。
我試圖用TEXT
,而不是varchar
,但我得到一個錯誤
文本,ntext和圖像數據類型 是局部變量無效。
任何想法是高度讚賞提前
我有SQL Server 2000和我有了一個存儲過程@output
作爲varchar(8000)
和我有一個循環,保持結果連接成@output
,並在年底我做了select @output
SQL Server 2000 varchar(8000)截斷爲256?
我的問題是輸出長度被截斷只有前256個字符!其他字符(輸出)丟失。
我試圖用TEXT
,而不是varchar
,但我得到一個錯誤
文本,ntext和圖像數據類型 是局部變量無效。
任何想法是高度讚賞提前
我敢打賭,你正在使用的查詢分析器此
感謝。如果你這樣做,很可能這是一個設置問題。在查詢分析器選項中,嘗試查找每列中顯示的最大字符數設置,將其設置得更高,例如設置爲8000.
事實上,我得到了使用PHP代碼執行SP的結果相同後,查詢分析器! – Alaa 2010-10-31 17:41:29
看起來這是對SQL連接訪問方法的限制。 MS SQL查詢分析器中說,這些功能的工作原理...
示例過程:
create procedure xTestPtoc
@InParam varchar(4000), @OutParam varchar(8000) out
as
set @OutParam = @InParam + @InParam
go
呼叫代碼:
declare @InParam varchar(4000)
declare @i int
declare @OutParam varchar(8000)
select @i = 1270, @InParam = '', @OutParam = ''
while (@i > 0)
select @InParam = @InParam + convert(varchar(10), @i), @i = @i - 1
select len(@InParam), @InParam
exec xTestPtoc @InParam, @OutParam out
select len(@OutParam), @OutParam
樣本代碼執行的結果(我跳過變量的完整輸出當然):
----------- ---------------
3973 127012691268...
(1 row(s) affected)
----------- ---------------
7946 127012691268...
(1 row(s) affected)
默認情況下,在較舊的數據a以ADO的形式訪問庫,並將ODBC列結果截斷爲256個字符。要獲得超過256個字符,您可以調用GetChunk這樣的特殊方法:http://msdn.microsoft.com/en-us/library/ms681747(v=VS.85).aspx
需要向我們顯示代碼。並接受一些你以前的問題的答案 – gbn 2010-10-31 17:07:47