Jestem nowy w firmie Oracle i nie jestem świadomy używania pętli w Oracle SQL (nie PL/SQL).Dla pętli w Oracle SQL
Musiałem wymagać zwiększenia liczby o +1 w zapytaniu i wykonania instrukcji; czy można użyć pętli for w SQL?
Jestem nowy w firmie Oracle i nie jestem świadomy używania pętli w Oracle SQL (nie PL/SQL).Dla pętli w Oracle SQL
Musiałem wymagać zwiększenia liczby o +1 w zapytaniu i wykonania instrukcji; czy można użyć pętli for w SQL?
Jesteś bardzo zdezorientowany, mój przyjacielu. W języku SQL nie ma LOOPS, tylko w PL/SQL. Oto kilka przykładów, w oparciu o istniejące Oracle stole - kopiuj/wklej aby zobaczyć wyniki:
-- 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
/
Na pewno będziesz w stanie to zrobić za pomocą klauzuli WITH lub użyj funkcji analitycznych dostępne w Oracle SQL.
Przy odrobinie wysiłku można uzyskać z nich wszystko w zakresie cykli, jak w zwykłych językach proceduralnych. Oba podejścia są dość potężne w porównaniu ze zwykłym SQL.
http://www.dba-oracle.com/t_with_clause.htm
To wymaga trochę wysiłku, choć. Nie bój się podać konkretnego przykładu.
Używanie prostego pseudo-stołu DUAL pomaga również.
Mam edytowane moje pytanie proszę spojrzeć na przykład – user964147
Niestety, nie widzę go. "mądrzy" faceci zbyt szybko zamknęli to pytanie, ponieważ go nie rozumieli. – MarianP
Czy możesz dodać kolejne pytanie? Określić go jako "jak to zrobić za pomocą funkcji analitycznych Oracle SQL"? w ten sposób nie będą go zamykać. – MarianP
Nie ma "pętli for" w operacjach na zestawach. Po prostu zapytaj "prawdziwe pytanie" - upewnij się, że pokazujesz wejście/wyjście/bieżącą próbę - i upewnij się, że tytuł odzwierciedla to. Usuń znacznik 'plsql', jeśli rzeczywiście * nie jest to PL/SQL * zgodnie z opisem. –
Jak powiedział pst, nie ma "pętli", ale są sposoby na osiągnięcie tego samego efektu. Co rozumiesz przez * wykonanie instrukcji * i która liczba powinna zostać zwiększona o 1 i ile razy? –
@ A.B.Cade Chcę utworzyć niestandardową zmienną powiedz "i" i chcę ją zwiększyć, aż osiągnie "5" Chcę użyć tej zmiennej do dołączenia do jakiegoś ciągu. czy jest to możliwe w sql – user964147