2013-02-21 18 views
11

Sono nuovo di Oracle e non sono a conoscenza dell'utilizzo del ciclo in Oracle SQL (non in PL/SQL).Per ciclo in Oracle SQL

Avevo il requisito di aumentare il numero di +1 nella query ed eseguire le istruzioni; è possibile utilizzare un ciclo for in SQL?

+0

Non ci sono "for loops" nelle operazioni impostate. Basta chiedere la "vera domanda" - assicurati di mostrare il tentativo di input/output/corrente - e assicurati che il titolo lo rifletta. Rimuovi il tag 'plsql' se è effettivamente * non PL/SQL * come descritto. –

+0

Come già detto, non ci sono "for loops" ma ci sono modi per ottenere lo stesso effetto. Cosa intendi con * eseguire le istruzioni * e quale numero deve essere aumentato di 1 e quante volte? –

+0

@ A.B.Cade Voglio creare una variabile personalizzata diciamo 'io' e voglio aumentarla fino a quando non raggiunge '5' voglio usare questa variabile per aggiungere una stringa. è possibile in sql – user964147

risposta

25

Sei abbastanza confuso amico mio. Non ci sono LOOPS in SQL, solo in PL/SQL. Ecco alcuni esempi basati su Oracle tabella esistente - copia/incolla per vedere i risultati:

-- 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 
/
3

si sarà certamente in grado di farlo utilizzando clausola WITH, o utilizzare funzioni analitiche disponibili in Oracle SQL.

Con un certo sforzo sarete in grado di ottenere qualcosa da loro in termini di cicli come nei linguaggi procedurali ordinari. Entrambi gli approcci sono piuttosto potenti rispetto all'ordinario SQL.

http://www.dba-oracle.com/t_with_clause.htm

http://www.orafaq.com/node/55

Si richiede un certo sforzo però. Non aver paura di pubblicare un esempio concreto.

Utilizzando una semplice pseudo-tabella DUAL aiuta anche.

+0

ho modificato la mia domanda per favore dare un'occhiata all'esempio – user964147

+1

scusa, non posso vederlo. I ragazzi "saggi" hanno chiuso la domanda troppo presto, probabilmente, perché non lo capivano. – MarianP

+0

Potresti postare un'altra domanda? Inquadrarlo come 'come fare usando le funzioni analitiche di Oracle SQL'? in questo modo non lo chiuderanno. – MarianP