我已經創造了一些非常基本的SQL腳本的命令:的Oracle SQL Developer把我的意見爲
/*
Change date format
*/
alter session set nls_date_format='DD/MM/YYYY';
/*
Drop old tables (if exists)
*/
DROP TABLE Students;
/*
Create new tables
*/
CREATE TABLE Students
(
Id NUMBER(6) PRIMARY KEY,
LastName VARCHAR2(20),
FirstName VARCHAR2(10),
Address VARCHAR2(10),
BirthDay DATE,
GroupId NUMBER(3)
);
/*
Check the table was created successfully
*/
DESC Students;
/*
Insert a new record to the table
*/
INSERT INTO Students VALUES(101, 'Solin', 'Dan', 'Beer-Sheva', '01/02/1985', 11);
/*
Check the record was inserted succesfully
*/
SELECT * FROM Students;
/*
Add 'AvgMark' field to the table with default of 0
*/
ALTER TABLE Students ADD AvgMark NUMBER(5,2) DEFAULT 0;
/*
Check that the new field was added
*/
DESC Students;
/*
Insert 3 new records to the table
*/
INSERT INTO Students VALUES(102, 'Tal', 'Ruti', 'Tel-Aviv', '10/07/1988', 12, 70);
INSERT INTO Students VALUES(103, 'Kohen', 'Yossi', 'Dimona', '01/08/1987', 11, 80);
INSERT INTO Students VALUES(104, 'Toys', 'Vered', 'Tel-Aviv', '15/09/1988', 12, 90);
/*
Check the records were inserted succesfully
*/
SELECT * FROM Students;
/*
Change 'Address' data type to VARCHAR2(15)
*/
ALTER TABLE Students MODIFY Address VARCHAR2(15);
/*
Check that the data type has changed
*/
DESC Students; -- Some comment
在Script Output
我得到這個錯誤消息的結尾: ERROR: object COMMENT does not exist
如果我」我會得到同樣的錯誤WORLD
「對象」...
我改變了整個腳本,以避免單行註釋,結果是一樣的。
我可以再次避免在這個例子中,但我真的想了解是什麼導致了這個奇怪的問題......
另一件事,這可能有助於解決這個問題,是另一種奇怪的錯誤我都在相同的腳本,在評論之上幾行。在這條線: ALTER TABLE Students MODIFY Address VARCHAR2(15);
SQL開發人員顯示我的最後兩個字符下稱Syntax error. Partially recognized rules (Railroad diagrams): ...
如果我要跑的聲明,它會工作得很好錯誤(右括號和分號)..
使用'--'。兩個連字符應始終在SQL代碼中工作(這是註釋的ANSI標準)。 –
我想這是因爲'DESC'不是一個真正的SQL語句。它最終甚至不需要';'。 'desc學生; - bla'導致SQL \ * Plus中的「無效標識符」。 SQL Developer試圖模仿我猜測的SQL \ * Plus行爲。所以你唯一的選擇是在你使用'DESC'的行中不要使用'--'註釋。' –
@a_horse_with_no_name - 實際上這不是因爲'DESC'是一個SQL \ * Plus命令(與SQL或PL相對)。相反,無論聲明是什麼類型,註釋都不能在聲明終結符之後出現。 – mathguy