2013-11-15 3 views
0

У меня возникла ошибка компиляции при создании процедуры.Ошибки компиляции при создании процедуры ORACLE

Это мой procedure.sql

CREATE OR REPLACE PROCEDURE verify IS 
    no_of_duplicates NUMBER:=0; 
BEGIN 
    SELECT COUNT(*) 
    INTO no_of_duplicates 
    FROM EMPLOYEE 
    WHERE E# = (SELECT E# 
       FROM DRIVER 
       WHERE EXISTS (SELECT E# 
           FROM MECHANIC 
           WHERE DRIVER.L# = MECHANIC.L#)); 
    IF no_of_duplicates=0 THEN 
    dbms_output.put_line('OK'); 
    ELSE 
    SELECT E#, NAME 
     FROM EMPLOYEE 
    WHERE E# = (SELECT E# 
        FROM DRIVER 
        WHERE EXISTS (SELECT E# 
            FROM MECHANIC 
           WHERE DRIVER.L# = MECHANIC.L#)); 
    END IF; 
END verify; 
/

Я застрял с этим в течение нескольких часов и не могу найти ничего плохого с ним. Кто-нибудь может мне с этим помочь? Благодаря!

+2

Нет INTO в вашем выборе после IF. Проверьте свои запросы. И прочитал книгу о курсорах и исключениях. – Art

+0

Состояние вашего IF выглядит как задание? – halfbit

+0

Какая ошибка компиляции? –

ответ

1

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

select * from user_errors where name = 'VERIFY' 

Кроме того, что сказал @Art, похоже, это происходит потому, что вы не используете INTO в вашем втором выборе. Вам понадобится еще две переменные для хранения E # и имени

+0

Хорошо. Я создал переменные для хранения e # и имени. Итак, как мне их отображать? –

+0

dbms_output.put_line –

+0

В вашей процедуре добавьте dbms_output.put_line (переменную) после инструкции if, а затем просто выполните процедуру –

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