Znaleziono dziwną rzecz. Nie mogę zrozumieć, dlaczego Oracle pozwalają tej kwerendy i dlaczego cnt
zmienna nie zmienia się po to wykonanie:Oracle. Nie można zrozumieć, jak działa FOR z podzapytaniem SELECT INTO
declare cnt number;
begin
for r in (Select count(1) into cnt from v$session) loop
dbms_output.put_line(cnt);
END LOOP;
end;
Select count(1) from v$session
powraca not null wartość
Oczywiście ja rozumiem:
- Ten
FOR
nie potrzebuje w tej sytuacji.Count
bezINTO
retunuje tylko jeden wiersz. - Że można go używać bez
INTO
i będzie działać.
Po prostu ciekawy jak i dlaczego działa w powyższym zapytaniu.
To dziwne, dlaczego Oracle pozwalają podzapytanie z SELECT INTO
, ponieważ w sytuacji wspólnego Oracle zwraca błąd kompilacji ORA-06550
declare cnt number;
begin
select count(1) from (Select count(1) into cnt from v$session)
end;
or
A jeśli pierwszy kwerenda działa - dlaczego nie poprawnie powrócić wartość CNT?
proszę spojrzeć na moją odpowiedź. Powinieneś nazwać swoje kolumny w instrukcji select. Uchwyć 'r' jak rząd tabeli. –