我有一个PL/SQL的表结构代码,如下所示(此代码只是创建代码的一行(:
"VERSION" NUMBER(10) DEFAULT 1 1 105331 NOT NULL
问题出在DEFAULT之后的数字上。有人知道这是否合理吗?如果是,这意味着什么?当我运行整个代码时,我会得到一个"缺少右括号"的错误,但当我删除这一行时,它就起作用了。(这段代码不是我写的,我无法访问写它的开发人员(
有人知道这是否有意义吗?
不,它没有意义,也不是语法有效的代码。
1
和105331
都是数字,但组合的1 1 105331
不是数字,它是3个数字,尝试将3个数字放入单个NUMBER
列是没有意义的。
当SQL解析器解析语句时,它得到:
"VERSION" NUMBER(10) DEFAULT 1
到目前为止,这是有效的,然后它读取下一个数字,这是无效的语法,因此Oracle抱怨无效语法,并建议用右括号(错误消息的来源(终止DDL语句。
通常,(语义(版本标识符是一个由3个句号分隔的数字组成的字符串,表示主要、次要和补丁版本号(这不是一个可以表示为单个十进制数字的数字(,因此您可以使用:
"VERSION" VARCHAR2(10) DEFAULT '1.1.105331' NOT NULL
将列转换为这种格式是否有意义是您必须确定的,因为列的含义是一个商业决策,而不是我们需要确定的领域知识;然而,您当前的代码在语法上是无效的,我们可以告诉您,这是没有意义的,它不会编译。