--调用 exec GetMaxPages 5.0,'',''
alter procedure GetMaxPages
@pagesize float, --每页显示条数
@tablename varchar(20), --表名
@zlid varchar(20)
as
begin
declare @sql varchar(200) set @sql='select ceiling(count(*)/'+@pagesize+') from '+@tablename+' where (1=1)'
print @sql
exec (@Sql) end 此存贮过程执行时报错:
服务器: 消息 8114,级别 16,状态 5,过程 GetMaxPages,行 16
将数据类型 varchar 转换为 float 时出错。将此句改为
set @sql='select ceiling(count(*)/'+ltrim(@pagesize)+') from '+@tablename+' where (1=1)'
后可以通过print @sql看到@pagesize 此参数的小数点没了
请问大家怎么回事?
alter procedure GetMaxPages
@pagesize float, --每页显示条数
@tablename varchar(20), --表名
@zlid varchar(20)
as
begin
declare @sql varchar(200) set @sql='select ceiling(count(*)/'+@pagesize+') from '+@tablename+' where (1=1)'
print @sql
exec (@Sql) end 此存贮过程执行时报错:
服务器: 消息 8114,级别 16,状态 5,过程 GetMaxPages,行 16
将数据类型 varchar 转换为 float 时出错。将此句改为
set @sql='select ceiling(count(*)/'+ltrim(@pagesize)+') from '+@tablename+' where (1=1)'
后可以通过print @sql看到@pagesize 此参数的小数点没了
请问大家怎么回事?
@pagesize float, --每页显示条数
@tablename varchar(20), --表名
@zlid varchar(20)
as
begin
declare @sql varchar(200) set @sql='select ceiling(count(*)/CAST('+LTRIM(@pagesize)+' AS FLOAT)) from '+@tablename+' where (1=1)'
print @sql
exec (@Sql) end 这样呢?
怎么会,ltrim怎么会把你的小数点给省略掉,
declare @pagesize float
set @pagesize='0.3'
select ltrim(@pagesize)
哦,你是小数后面带0啦。。
--这样:
alter procedure GetMaxPages
@pagesize float, --每页显示条数
@tablename varchar(20), --表名
@zlid varchar(20)
as
begin
declare @sql varchar(200) set @sql='select ceiling(count(*)/(1.0*'+ltrim(@pagesize)+')) from '+@tablename+' where (1=1)'
print @sql
exec (@Sql) end
alter procedure GetMaxPages
@pagesize float, --每页显示条数
@tablename varchar(20), --表名
@zlid varchar(20)
as
begin
declare @sql varchar(200) set @sql='select ceiling(count(*)/'+ltrim(cast (@pagesize as numeric(10,5)))+') from '+@tablename+' where (1=1)'
print @sql
exec (@Sql)
end
go
@pagesize int, --每页显示条数
@tablename varchar(20), --表名
@zlid varchar(20),
@Page int output--總頁數
as
begin
declare @sql nvarchar(4000) set @sql='select @Page=ceiling(count(*)*1.0/'+@pagesize+') from '+@tablename+' where (1=1)'
exec sp_executesql @sql,N'@Page int output',@Page outputend得到總頁數用一個變量輸出