谁能帮忙吧下面的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;