关于sqlserver存储过程搬到oracle数据库 大神们请指教
时间:2011-12-05
来源:互联网
CREATE OR REPLACE PROCEDURE PagingProc1
(
@page int, --当前页
@size int, --页大小
@pid varchar(100), --主键名称
@tname varchar(100), --表名
@pages int output, -- 总页数
@count int output, -- 总记录数量
@wname varchar(4000)='', --where条件
@oname varchar(4000)='', --排序条件
@columns varchar(4000)='*' --返回列名
)
as
declare @w varchar(100),@ww varchar(100),@o varchar(100)
set @ww =''
set @w=''
set @o=''
declare @sql1 varchar(4000),@sql2 nvarchar(4000),@sql3 varchar(4000),@sql4 varchar(4000)
if(@wname<>'')
begin
set @ww=' where '
set @w=' and '
end
if(@oname<>'')
set @o=' order by '
set @sql3= @ww + @wname +@o + @oname
set @sql4= @w + @wname +@o + @oname
set @sql2='select @a=count(*) from '+ @tname +@ww + @wname
exec sp_executesql @sql2,N'@a int output',@count output
set @pages=ceiling(@count*1.0/@size)
set @page=@page-1
if(@page=0)
set @sql1='select top '+str(@size)+' '+@columns+' from '+@tname+@sql3
if(@page>0)
-- set @sql1 = 'select top '+str(@size)+' '+@columns+' from '+@tname
-- +' where '+@pid+' < (select min('+@pid+') from '
-- +' (select top '+str(@page*@size) +' '+@pid +' from '+@tname+ @sql3+')a)' + @sql4
set @sql1 = 'select top '+str(@size)+' '+@columns+' from '+@tname
+' where '+@pid+' > (select max('+@pid+') from '
+'(select top '+str(@page*@size) +' '+@pid +' from '+@tname + @sql3+')a)' + @sql4
print @sql1
exec(@sql1)
END PagingProc1;
作者: KingGJQ 发布时间: 2011-12-05
作者: KingGJQ 发布时间: 2011-12-05
作者: KingGJQ 发布时间: 2011-12-05

作者: KingGJQ 发布时间: 2011-12-05
作者: hupeng213 发布时间: 2011-12-05
就是个分页查询,何苦写函数呢,ORACLE本身提供,一定要改吗?
嗯 改下
作者: KingGJQ 发布时间: 2011-12-05

作者: KingGJQ 发布时间: 2011-12-05
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28