2013-07-02 4 views
0

Я пытаюсь выполнить следующий запрос PL/SQL, но не смог этого сделать. SQL Командная строка показывает ошибку в последней строкеНевозможно выполнить запрос в командной строке SQL

Ошибка:

ENCOUNTERED THE SYMBOL ";" WHEN EXPECTING ONE OF THE FOLLOWING : IF. 

Код:

SET SERVEROUTPUT ON  
SET VERIFY OFF  
DECLARE  
v_reg registration%ROWTYPE;  
v_totalscore NUMBER;  
BEGIN 
v_reg.registrationid :='&registrationid';  
v_reg.studentid := &studentid;  
v_reg.courseid := '&courseid';  
v_reg.projectscore := &projectscore;  
v_reg.assignmentscore := &assgnscore;  
v_reg.internalscore := &internalscore;  
v_reg.semesterscore := &semesterscore;  

IF NOT v_reg.projectscore BETWEEN 0 AND 20 THEN  
DBMS_OUTPUT.PUT_LINE('Invalid project score');  
ELSIF NOT v_reg.assignmentscore BETWEEN 0 AND 10 THEN  
DBMS_OUTPUT.PUT_LINE('Invalid assignment score');  
ELSIF NOT v_reg.internalscore BETWEEN 0 AND 20 THEN  
DBMS_OUTPUT.PUT_LINE('Invalid internal score');  
ELSIF NOT v_reg.semesterscore BETWEEN 0 AND 50 THEN  
DBMS_OUTPUT.PUT_LINE('Invalid semester score');  

ELSE  
v_totalscore:=v_reg.projectscore+v_reg.assignmentscore+v_reg.internalscore+v_reg.semesterscore;  
DBMS_OUTPUT.PUT_LINE('Student id'||v_reg.studentid);  
DBMS_OUTPUT.PUT_LINE('Course id : '||v_reg.courseid);  
DBMS_OUTPUT.PUT_LINE('Total score : '||v_totalscore);  
END IF;  
END;  

Ниже приводится структура таблицы из таблицы регистрации упомянутых в приведенном выше коде.

CREATE TABLE registration ( 
registrationid NUMBER CONSTRAINT pk_registration_registrationid PRIMARY KEY,  
studentid NUMBER CONSTRAINT fk_registration_studentid REFERENCES student(studentid),  
courseid VARCHAR2(4) CONSTRAINT fk_registraiton_courseid REFERENCES course(courseid),  
projectscore NUMBER(3),  
assignmentscore NUMBER(3),  
internalscore NUMBER(3),  
semesterscore NUMBER(3),  
grade Varchar2(2)  
);  

Я новичок в SQL и Run Sql с помощью командной строки, я не набирали код для создания таблицы, является то, что вероятной причиной?

+1

Зачем помечать код SQL Server для Oracle? – gbn

+0

Все в порядке с моей стороны - можете ли вы точно уточнить ошибку? – Emmanuel

+0

http://postimg.org/image/hibh8qmf7/ –

ответ

0

Учитывая изображение, которое вы показываете, факт, что вы еще не создали таблицу, действительно является причиной ошибки: 1-я ошибка, указанная в отношении РЕГИСТРАЦИИ, еще не определена. Сначала попробуйте определить его и заново запустить блок PL/SQL.

0

Я попытался запустить это, и я думаю, проблема в том, что вам не хватает/в конце вашего скрипта. Это означает, что когда вы запускаете его (т. Е. Ударяете f8 в командном окне), ничего не происходит. Я предполагаю, что теперь, но если вы затем добавите a, и снова нажмите f8, вы получите сообщение об ошибке. Если вы добавляете/под

end;

, чтобы получить

end;
/

, когда вы нажмете f8 в окне командной строки, он должен работать правильно.

+0

Нет, это не то, что я делал. См. Этот снимок экрана. http://postimg.org/image/hibh8qmf7/ За исключением ошибки в строке 22 в DBMS_OUTPUT.PUTLINE, которая должна быть DBMS_OUTPUT.PUT_LINE, в чем проблема в коде? –

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