我已经创造了一些非常基本的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