wolfnash 2013-07-04 08:09 采纳率: 0%
浏览 962

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

  • 写回答

1条回答 默认 最新

  • ChatGPTᴼᴾᴱᴺᴬᴵ 2023-01-01 20:51
    关注

    下面是 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;
    
    评论

报告相同问题?

悬赏问题

  • ¥20 idea运行测试代码报错问题
  • ¥15 网络监控:网络故障告警通知
  • ¥15 django项目运行报编码错误
  • ¥15 请问这个是什么意思?
  • ¥15 STM32驱动继电器
  • ¥15 Windows server update services
  • ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏
  • ¥15 模糊pid与pid仿真结果几乎一样
  • ¥15 java的GUI的运用
  • ¥15 我想付费需要AKM公司DSP开发资料及相关开发。