私は Oracle を初めて使用し、Oracle SQL (PL/SQL ではない) で for ループを使用することについて知りません。
クエリで数値を +1 増やしてステートメントを実行する必要がありました。SQL で for ループを使用することは可能ですか?
あなたはかなり混乱しています。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
/
WITH句を使用するか、Oracle SQLで利用可能な分析関数を使用することで、これを確実に実行できます。
ある程度の努力をすれば、通常の手続き型言語と同じように、サイクルの観点からそれらから何かを得ることができます。どちらのアプローチも、通常の SQL に比べてかなり強力です。
http://www.dba-oracle.com/t_with_clause.htm
多少の努力は必要ですが。具体例を投稿することを恐れないでください。
単純な擬似テーブル DUAL を使用することも役立ちます。