2016-10-21 57 views
0
  • 錯誤(25,1):PLS-00103:出現符號 「EXEC」
  • 錯誤(30,1):PLS-00103:出現當期望以下之一時,符號「SELECT」:開始函數編譯指示過程子類型當前光標刪除先前存在符號「開始」代替「選擇」繼續。
  • 錯誤(30,22):PLS-00103:遇到符號「end-of-file」時,期待以下其中一種情況:(begin case如果循環中聲明瞭goto結束異常退出mod null pragma raise return select update while與< <繼續關閉當前刪除獲取鎖芯打開回滾保存點設置SQL執行提交FORALL合流管清洗

DROP TABLE學生; COMMIT;我得到這些錯誤,不懂得如何解決

CREATE TABLE Student(
    studentNumber INT NOT NULL, 
    studentName VARCHAR2(20) NOT NUll, 
    gender CHAR(1) NOT NULL, 
    highSchoolAvg INT NOT NULL, 
    scholarship INT DEFAULT 0, 
    CONSTRAINT "student_gender" CHECK (gender IN ('M', 'F')), 
    CONSTRAINT "student_highSchoolAvg" CHECK (highSchoolAvg BETWEEN 0 AND  100) 
); 

CREATE OR REPLACE PROCEDURE AcceptStudent(
    studentNumberPR INT, 
    studentNamePR VARCHAR2, 
    genderPR CHAR, 
    highSchoolAvgPR INT) 
IS 
    ScholarshipPr INT; 
BEGIN 
    ScholarshipPR := 0; 

    IF highSchoolAvgPR >= 90 and highSchoolAvgPR <=100 THEN 
     ScholarshipPR := 1500; 

    ELSIF highSchoolAvgPR >= 85 and highSchoolAvgPR < 90 THEN 
     ScholarshipPR := 1000; 

    ELSE 
     raise_application_error(-20201, 'Invalid highSchool average'); 
    END IF; 

    INSERT INTO Student (studentNumber, studentName, gender,  highSchoolAvg, scholarship) 
     VALUES (studentNumberPR, studentNamePR, genderPR,  highSchoolAvgPR, ScholarshipPr); 
END; 

exec ACCEPTSTUDENT (1, 'Ashley', 'F', 87); 
exec ACCEPTSTUDENT (2, 'Will', 'M', 76); 
exec ACCEPTSTUDENT (3, 'David', 'M', 94); 
--Holly should be the only error-- 
exec ACCEPTSTUDENT (4, 'Holly', 'F', 103); 
select * from student; 
+1

WOW。您的錯誤消息表明這是Oracle,但您使用mysql和sql-server標記了您的問題。 –

+1

[Oracle存儲過程]的可能重複(http://stackoverflow.com/questions/1679733/oracle-stored-procedure) –

回答

0

你想從腳本執行一切?您缺少斜線/本身,在一個單獨的行後,程序。