Как установить переменные в цикле с оракулом?
У меня есть цикл и переменная v_rownum
и я хочу установить для него значение:
FOR donvi_rows IN v_donvi
LOOP
DECLARE
v_rownum number;
SELECT r
INTO v_rownum
FROM
(SELECT ROWNUM AS r, k.Id
FROM don_vi k
WHERE k.ParentId = 1 )
WHERE Id = donvi_rows.Id;
END LOOP;
Но это исключение:
PLS-00103: Encountered the symbol "SELECT" when expecting one of the following:
begin function pragma procedure subtype type <an identifier>
<a double-quoted delimited-identifier> current cursor delete
exists prior
The symbol "begin" was substituted for "SELECT" to continue.
В настоящее время я изучаю Oracle. Я не знаю много об этом. Пожалуйста, помогите мне решить мою проблему.
2 ответа
Решение
В Oracle вам нужно объявить все ваши переменные в верхней части блока перед BEGIN
:
DECLARE
... variable declarations
BEGIN
... program logic
END;
Ваш код должен выглядеть примерно так:
DECLARE
v_rownum number;
CURSOR v_donvi IS
SELECT * FROM whatever;
... any other declarations
BEGIN
FOR donvi_rows IN v_donvi
LOOP
SELECT r
INTO v_rownum
FROM (
SELECT ROWNUM AS r, k.Id
FROM don_vi k
WHERE k.ParentId = 1
)
WHERE Id = donvi_rows.Id;
END LOOP;
END;
Как твоя учеба?;) Я использую это:
DECLARE
q NUMBER;
BEGIN
q := &x;
for x IN 1 .. q LOOP
Попробуй это
FOR donvi_rows IN v_donvi
LOOP
DECLARE
v_rownum number;
BEGIN
SELECT r
INTO v_rownum
FROM
(SELECT ROWNUM AS r, k.Id
FROM don_vi k
WHERE k.ParentId = 1 )
WHERE Id = donvi_rows.Id;
END;
END LOOP;