我有一个用于pl/sql的表结构代码,如下所示(此代码只是一行代码创建):
"VERSION" NUMBER(10) DEFAULT 1 1 105331 NOT NULL
问题在于默认值之后的数字。有人知道这是否合理吗?如果有,那是什么意思?当我运行整个代码时,我得到了一个“缺少右括号”的错误,但是当我删除这一行时,它就工作了(这段代码不是我写的,我没有权限访问编写它的开发人员)
vyswwuz21#
有人知道这是否合理吗?不,它没有意义,也不是语法上有效的代码。 1 以及 105331 每个数字都是组合的吗 1 1 105331 不是数字,而是3个数字,把3个数字放在一个数字里是没有意义的 NUMBER 列。当sql解析器解析语句时,它将得到:
1
105331
1 1 105331
NUMBER
"VERSION" NUMBER(10) DEFAULT 1
到目前为止,这是有效的,然后它读取下一个数字,这是无效的语法,所以oracle抱怨无效的语法,并建议有一件事是有效的,那就是用右括号结束ddl语句(这就是错误消息的来源)。通常,(语义)版本标识符是一个字符串,其中包含3个以句号分隔的数字,表示主要版本号、次要版本号和修补程序版本号(这不是可以表示为单个十进制数的数字),因此:
"VERSION" VARCHAR2(10) DEFAULT '1.1.105331' NOT NULL
将列转换为这种格式是否有意义是您必须确定的,因为列的含义是一个业务决策,而不是我们需要确定的领域知识;但是,您当前的代码在语法上是无效的,我们可以告诉您,这是没有意义的,它将不会编译。
1条答案
按热度按时间vyswwuz21#
有人知道这是否合理吗?
不,它没有意义,也不是语法上有效的代码。
1
以及105331
每个数字都是组合的吗1 1 105331
不是数字,而是3个数字,把3个数字放在一个数字里是没有意义的NUMBER
列。当sql解析器解析语句时,它将得到:
到目前为止,这是有效的,然后它读取下一个数字,这是无效的语法,所以oracle抱怨无效的语法,并建议有一件事是有效的,那就是用右括号结束ddl语句(这就是错误消息的来源)。
通常,(语义)版本标识符是一个字符串,其中包含3个以句号分隔的数字,表示主要版本号、次要版本号和修补程序版本号(这不是可以表示为单个十进制数的数字),因此:
将列转换为这种格式是否有意义是您必须确定的,因为列的含义是一个业务决策,而不是我们需要确定的领域知识;但是,您当前的代码在语法上是无效的,我们可以告诉您,这是没有意义的,它将不会编译。