对于Oracle SQL中的循环

use*_*147 15 sql oracle

我是Oracle新手,我不知道在Oracle SQL(而不是PL/SQL)中使用for循环.

我要求在查询中将数字增加+1并执行语句; 是否可以在SQL中使用for循环?

Art*_*Art 34

你很困惑我的朋友.SQL中没有LOOPS,仅在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
/
Run Code Online (Sandbox Code Playgroud)