ti-enxame.com

Loop for no SQL SQL

Eu sou novo no Oracle e não conheço o uso do loop for no Oracle SQL (não no PL/SQL).

Eu tinha um requisito para aumentar o número em +1 na consulta e executar as instruções; é possível usar um loop for no SQL?

15
user964147

Você está bem confuso, meu amigo. Não há LOOPS no SQL, apenas no PL/SQL. Aqui estão alguns exemplos baseados na tabela Oracle existente - copie/cole para ver os resultados:

-- 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
/
34
Art

Você certamente poderá fazer isso usando a cláusula WITH WITH ou usar funções analíticas disponível no Oracle SQL.

Com algum esforço, você seria capaz de obter algo deles em termos de ciclos, como nas linguagens processuais comuns. Ambas as abordagens são bastante poderosas em comparação com o SQL comum.

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

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

Requer algum esforço, no entanto. Não tenha medo de postar um exemplo concreto.

Usando pseudo-tabela simples, o DUAL também ajuda.

3
MarianP