2013-09-13 3 views
-3

анонимного PL/SQL блока:Отсутствует ошибка ключевого слова в Oracle анонимной PL/SQL блоке

DECLARE 
    CURSOR employees_in_10_cur 
    IS 
    SELECT * 
    FROM ad_week_table 

BEGIN 
    FOR employee_rec 
    IN employees_in_10_cur 
    LOOP 
    DBMS_OUTPUT.put_line(employee_rec.ad_no || ',' || employee_rec.week_no); 
    END LOOP; 
END; 

Я получаю ошибку недостающей ключевого слова, когда я выполнить этот блок. Что я делаю не так?

+3

Этот вопрос не соответствует теме, поскольку он слишком локализован – Ben

ответ

0

положите точку с запятой после определения запроса курсора;

DECLARE 
     CURSOR employees_in_10_cur 
     IS 
      SELECT * 
      FROM ad_week_table; 

    BEGIN 
     FOR employee_rec 
     IN employees_in_10_cur 
     LOOP 
      DBMS_OUTPUT.put_line (
      employee_rec.ad_no || ',' || employee_rec.week_no); 
     END LOOP; 
    END; 
0

Вы упускаете с запятой в конце курсора:

CURSOR employees_in_10_cur 
    IS 
     SELECT * 
     FROM ad_week_table; 

Сообщение об ошибке всегда будет давать вам номер строки происходит ошибка. Всегда проверяйте это и смотрите в этой области.

Например, если я изменю таблицу, чтобы я мог ее запустить, я получаю следующее:

SQL> declare 
    2 
    3  cursor employees_in_10_cur is 
    4  select * 
    5  from user_tables 
    6 
    7 begin 
    8  for employee_rec in employees_in_10_cur loop 
    9  dbms_output.put_line (
10   employee_rec.ad_no || ',' || employee_rec.week_no); 
11  end loop; 
12 end; 
13/
    for employee_rec in employees_in_10_cur loop 
     * 
ERROR at line 8: 
ORA-06550: line 8, column 8: 
PL/SQL: ORA-00905: missing keyword 
ORA-06550: line 4, column 5: 
PL/SQL: SQL Statement ignored 
ORA-06550: line 11, column 4: 
PLS-00103: Encountered the symbol "END" when expecting one of the following: 
begin function pragma procedure subtype type <an identifier> 
<a double-quoted delimited-identifier> current cursor delete 
exists prior 

У вас есть 3 ошибки; один в строке 8, потому что курсор недействителен, один в строке 11, потому что цикл не происходит, потому что курсор недействителен, а один - в строке 4, в котором говорится, что «заявление проигнорировано».

Смежные вопросы