(60分)求一个从sql翻译到oracle的存储过程。
小弟我才转到oracel很不熟悉,有一个存储过程自己修改了部分,但是有很多错误,请大虾修改成oracle版,马上给分。
--最通用的分页存储过程
-- 获取指定页的数据
CREATE PROCEDURE Pagination
tableName varchar2(255), -- 表名
strGetFields varchar2(1000) = '* ', -- 需要返回的列
fieldName varchar(255)= ' ', -- 排序的字段名
PageSize int = 10, -- 页尺寸
PageIndex int = 1, -- 页码
doCount bit = 0, -- 返回记录总数, 非 0 值则返回
OrderType bit = 0, -- 设置排序类型, 非 0 值则降序
strWhere varchar2(1500) = ' ' -- 查询条件 (注意 不要加 where)
AS
declare strSQL varchar2(5000) -- 主Sql语句
declare strTmp varchar2(110) -- 临时变量
declare strOrder varchar2(400) -- 排序类型
if doCount <> 0 --如果记录数不为0
begin
if :strWhere <> ' '
set strSQL = 'select count(*) as Total from '+ tableName + ' where '+ strWhere
else
set strSQL = 'select count(*) as Total from '+ tableName + ' '
end
--以上代码的意思是如果 doCount传递过来的不是0,就执行总数统计。以下的所有代码都
--是 doCount为0的情况
else
begin
if OrderType <> 0 --如果@OrderType不是0,就执行降序,这句很重要!
begin
set strTmp = ' <(select min '
set strOrder = ' order by '+ fieldName + ' desc '
end
else
begin
s