大家好,先看存储过程set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
goALTER Procedure [dbo].[dk_sp3]
@iPageCount int output,  --总页数
@iPage int,              --当前页号
@iPageSize int           --每页记录数目as
set nocount ON
begin
--创建临时表
Create table #tb1(ID int identity,
                  title varchar(40),
                  hits int  
)
--写入数据
insert into #tb1
select top 50 title,hits from conews--取得记录数目
declare @iRecordCount int
set @iRecordCount = @@rowCount
If @iRecordCount%@iPageSize = 0
set @iPageCount = ceiling(@iRecordCount%@iPageSize)
Else
Set @iPageCount = ceiling(@iRecordCount%@iPageSize) + 1 If @iPage > @iPageCount
set @iPage = @iPageCount
-- 确定当前页的始末记录
Declare @iStart int
Declare @iEnd int
set @iStart = (@iPage -1)*@iPageSize
set @iEnd = @iStart+@iPageSize+1--取得当前页记录
select * from #tb1 where ID>@iStart and ID <@iEnd 
--删除临时表 
DROP TABLE #tb1 
--返回记录总数 
return @iRecordCount
end然后通过下面的方法,运行declare @iPageCount int 
execute dk_sp3 @iPageCount output,1,5出错提示:消息 8152,级别 16,状态 2,过程 dk_sp3,第 15 行
将截断字符串或二进制数据。
语句已终止。
请教各位,问题出在哪里?

解决方案 »

  1.   

     title varchar(40),  改成title varchar(2000) 试下
      

  2.   

    消息 8152,级别 16,状态 2,过程 dk_sp3,第 15 行
    将截断字符串或二进制数据。
    语句已终止。
    这种问题一般是你变量长度定义的问题
      

  3.   

    第15行是此句
    insert into #tb1
    select top 50 title,hits from conews
    估计你定义的临时表字段title 长度比conews表的title字段长度小