我是PL/SQL的新手,所以我想请你帮忙。目前,我将使用PL/SQL处理一个数据库。
下面是一个数据,将进行处理。
x1c 0d1x的数据
这是我无法执行以下步骤的地方:
1.此过程将生成一个SQL语句(例如SELECT * from DB WHERE ···)
- SQL得到的记录将被分配给另一个变量(PL/SQL中的Cursor)。
1.但是获取的记录超过3,000行,生成的SQL将在3,000行分配给变量(Cursor)后停止获取它们
1.在步骤3发生之后,我们编辑SQL语句,以便在我们再次执行步骤1到步骤3时选择从第3,001条开始的记录。
是否可以按我们希望的方式循环过程?如果是的话,你能告诉我怎么写代码吗?现在,它是如此模糊,但我可以想象下面的代码:
create or replace procedure TEST1
IS
strCondition := “WHERE ・・・ ORDER BY ~~~”
strSQL := “SELECT * FROM DB” + strCondition;
a NUMBER(3000) := 1;
BEGIN
LOOP
(Conduct the SQL to get records until it surpasses 3,000)
IF a <3000 THEN
EXIT;
END IF;
a := a + 1;
END LOOP;
END;
字符串
如果您能告诉我每3,000行记录的处理代码,我将不胜感激
2条答案
按热度按时间yrwegjxp1#
也许你应该描述这个问题,而不是你认为应该解决的方式。因为,无论你想做什么,都可能有不同/更好的方法来做到这一点。
例如,为什么要反复生成
select
语句?我不明白你说你将把这些值赋给游标(*)是什么意思。而且,在3000行的块中做它有什么意义呢?总之,正如最后一个问题所说
是否可以按照我们想要的方式循环过程?
这是一个选择我没有你的100.000行表,所以我将在Scott的
emp
表上演示它,该表包含14行,所以在一轮中我只做3行,而不是3.000行。字符串
结果是
型
8yparm6h2#
在Oracle 12中,创建游标并使用
OFFSET x FETCH NEXT y ROWS ONLY
对游标进行分页:字符串
当你想获得第二页(或更高)的结果时,把页码作为参数传递给过程。