谁能帮忙吧下面的sqlserver存储过程改成oracle版的

谁能帮忙吧下面的sqlserver存储过程改成oracle版的
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[PagingQuery]
@sql NVARCHAR(4000),
@currentpage int,
@pagesize int,
@count int=0 output
AS SET NOCOUNT ON

DECLARE @ptr
INT EXEC sp_cursoropen @ptr output, @sql, @scrollopt=1, @ccopt=1, @rowcount=@count output
SET @currentpage=(@currentpage - 1) * @pagesize + 1;
EXEC sp_cursorfetch @ptr, 16, @currentpage, @pagesize
EXEC sp_cursorclose @ptr
SET NOCOUNT OFF
GO

下面是 Oracle 中实现分页查询的存储过程:

CREATE OR REPLACE PROCEDURE PagingQuery(
  p_sql IN VARCHAR2,
  p_current_page IN INTEGER,
  p_page_size IN INTEGER,
  p_count OUT INTEGER
)
AS
  v_offset INTEGER;
  v_limit INTEGER;
  v_query VARCHAR2(4000);
BEGIN
  v_offset := (p_current_page - 1) * p_page_size + 1;
  v_limit := p_page_size;
  v_query := 'SELECT * FROM (' || p_sql || ') WHERE ROWNUM BETWEEN ' || v_offset || ' AND ' || (v_offset + v_limit - 1);
  EXECUTE IMMEDIATE v_query INTO p_count;
END;