大家好,先看存储过程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 行
将截断字符串或二进制数据。
语句已终止。请教各位,问题出在哪里?
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 行
将截断字符串或二进制数据。
语句已终止。请教各位,问题出在哪里?
将截断字符串或二进制数据。
语句已终止。
这种问题一般是你变量长度定义的问题
insert into #tb1
select top 50 title,hits from conews
估计你定义的临时表字段title 长度比conews表的title字段长度小