pl / sql Ошибка курсора ORA-06550 ORA-00905 Курсор не скомпилируется из-за отсутствия ключевого слова. Я не знаю, какое ключевое слово мне не хватает - PullRequest
1 голос
/ 25 января 2020

Я пытаюсь написать простой курсор, который будет отображать все продажи из таблицы SALES в форме (фамилия продавца), продал продукт (фамилия клиента)

Вот мой курсор:

DECLARE
    l_sellersurname
        seller.sellersurname%type;
    l_customersurname
        customer.customersurname%type;
        l_sale
            sale.saleid%type;
CURSOR c IS 
select * FROM SALE
BEGIN 
    for sale in c loop

  DBMS_OUTPUT.put_line (
     l_sellersurname || 
     ' sold a product to a Mr/Ms. ' || 
     l_customersurname);
end loop;
END;

Я получаю сообщение об ошибке:

ORA-06550: строка 11, столбец 6: PL / SQL: ORA-00905: отсутствует ключевое слово

Любой может дать мне любой советы как это исправить?

Ответы [ 2 ]

2 голосов
/ 25 января 2020

Добавьте ; в конце курсора:

CURSOR c IS 
select * FROM SALE;

Также обратите внимание, что вы ничего не вставляете в свои переменные l_sellersurname, l_customersurname, l_sale. Я уверен, что это только начало какой-то процедуры или функции ...

Допустим, это часть процедуры, здесь демонстрация, показывающая, что после добавления; после курсора все будет работать нормально: https://dbfiddle.uk/?rdbms=oracle_18&fiddle=8c8cc10ac215dbbf6020070be1ef69e4

0 голосов
/ 25 января 2020

Возможно, вы хотели это:

begin
    for r in (
        select * from sale
    )
    loop
        dbms_output.put_line(r.sellersurname || ' sold a product to a Mr/Ms. ' || r.customersurname);
    end loop;
end;
...