+ -
当前位置:首页 → 问答吧 → 关于sqlserver存储过程搬到oracle数据库 大神们请指教

关于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

既然是sql的 当然就会有错,错误提示就不说了。定义变量开始,请大神们详细点

作者: KingGJQ   发布时间: 2011-12-05

呃 自己先顶下

作者: KingGJQ   发布时间: 2011-12-05

作者: KingGJQ   发布时间: 2011-12-05

就是个分页查询,何苦写函数呢,ORACLE本身提供,一定要改吗?

作者: hupeng213   发布时间: 2011-12-05

引用 4 楼 hupeng213 的回复:
就是个分页查询,何苦写函数呢,ORACLE本身提供,一定要改吗?

嗯 改下

作者: KingGJQ   发布时间: 2011-12-05

作者: KingGJQ   发布时间: 2011-12-05