gpt4 book ai didi

sql - Oracle SQL Developer 将我的评论视为命令

转载 作者:行者123 更新时间:2023-12-04 23:32:22 26 4
gpt4 key购买 nike

我创建了一些非常基本的 SQL 脚本:

/*
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 的末尾,我收到以下错误消息:错误:对象 COMMENT 不存在

如果我将注释更改为 Hello World 我将得到与 WORLD "object"...相同的错误...

我更改了整个脚本以避免单行注释,结果是一样的。

我可以在这个例子中再次避免它,但我真的很想了解是什么导致了这个奇怪的问题......


另一件可能有助于解决问题的事情是我在同一个脚本中遇到的另一个奇怪的错误,注释上方几行。在这一行:ALTER TABLE Students MODIFY Address VARCHAR2(15);

SQL Developer 在最后两个字符(右括号和分号)下显示一个错误,提示 语法错误。部分认可的规则(铁路图):...

如果我运行该语句,它会正常工作...

最佳答案

这似乎是 SQL Developer 的错误/功能。


desc[ribe] 是 SQL Worksheet 支持的 SQL*Plus 语句之一。

https://docs.oracle.com/cd/E11882_01/doc.112/e12152/intro.htm#RPTUG10710


在 SQL Developer 中我们可以注意到一些在 SQL*Plus 中不存在的有趣现象:
1. 当给定多个标记时,除了最后一个标记外,所有标记都将被忽略。

desc some gibberish - yada yada yada t3

Name Null Type       
---- ---- ----------
C3 NUMBER(38)

2。 -- 不被视为行注释的符号,而是被视为对象名称。

desc --

ERROR:                          
-------------------------------
ERROR: object -- does not exist

3。单个分号将被忽略,不会被视为语句终止符。

desc ; ; ; ; ; ; t1;

Name Null Type       
---- ---- ----------
C1 NUMBER(38)

因此,当给出命令时——

DESC Students; -- Some comment

只有最后一个标记“comment”被处理并产生错误,因为没有对象“comment”。

关于sql - Oracle SQL Developer 将我的评论视为命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40516819/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com