我是 Oracle 新手,我不知道在 Oracle SQL(不是 PL/SQL)中使用 for 循环。
我需要在查询中将数字增加 +1 并执行语句;是否可以在 SQL 中使用 for 循环?
你很困惑我的朋友。SQL 中没有循环,只有 PL/SQL 中。下面是一些基于现有 Oracle 表的示例 - 复制/粘贴以查看结果:
-- Numeric FOR loop --
set serveroutput on -->> do not use in TOAD --
DECLARE
k NUMBER:= 0;
BEGIN
FOR i IN 1..10 LOOP
k:= k+1;
dbms_output.put_line(i||' '||k);
END LOOP;
END;
/
-- Cursor FOR loop --
set serveroutput on
DECLARE
CURSOR c1 IS SELECT * FROM scott.emp;
i NUMBER:= 0;
BEGIN
FOR e_rec IN c1 LOOP
i:= i+1;
dbms_output.put_line(i||chr(9)||e_rec.empno||chr(9)||e_rec.ename);
END LOOP;
END;
/
-- SQL example to generate 10 rows --
SELECT 1 + LEVEL-1 idx
FROM dual
CONNECT BY LEVEL <= 10
/
您当然可以使用WITH 子句或使用Oracle SQL 中可用的分析函数来做到这一点。
通过一些努力,您将能够像在普通过程语言中一样从周期中得到任何东西。与普通 SQL 相比,这两种方法都非常强大。
http://www.dba-oracle.com/t_with_clause.htm
不过,这需要一些努力。不要害怕发布一个具体的例子。
使用简单的伪表 DUAL 也有帮助。