2010-10-31 72 views
2

我有SQL Server 2000和我有了一個存儲過程@output作爲varchar(8000) 和我有一個循環,保持結果連接成@output,並在年底我做了select @outputSQL Server 2000 varchar(8000)截斷爲256?

我的問題是輸出長度被截斷只有前256個字符!其他字符(輸出)丟失。

我試圖用TEXT,而不是varchar,但我得到一個錯誤

文本,ntext和圖像數據類型 是局部變量無效。

任何想法是高度讚賞提前

+1

需要向我們顯示代碼。並接受一些你以前的問題的答案 – gbn 2010-10-31 17:07:47

回答

3

我敢打賭,你正在使用的查詢分析器此

感謝。如果你這樣做,很可能這是一個設置問題。在查詢分析器選項中,嘗試查找每列中顯示的最大字符數設置,將其設置得更高,例如設置爲8000.

+0

事實上,我得到了使用PHP代碼執行SP的結果相同後,查詢分析器! – Alaa 2010-10-31 17:41:29

1

看起來這是對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)