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;
    
    评论

报告相同问题?

悬赏问题

  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料