oracle - 无法在 SQL CREATE TABLE 命令中设置 INTEGER 数据类型的精度
问题描述
我正在尝试在 Oracle 中创建下表。
CREATE TABLE CUSTOMER(CUST_ID INT(10),
CUST_NAME VARCHAR2(50),
CUST_SEX CHAR(2),
CUST_STATE VARCHAR2(50),
CUST_COUNTRY VARCHAR2(50));
我收到一条错误消息,提示缺少右括号。实际上,问题在于 CUST_ID 列的 INT 数据类型。从 DDL 查询中删除精度 :(10) 后,我就能够成功执行它。
Oracle 文档没有指定有关此数据类型是否可以伴随精度参数的任何内容。但是 Oracle 确实提到 INTEGER/INT 符合 ANSI 标准。
https://docs.oracle.com/cd/B19306_01/olap.102/b14346/dml_datatypes002.htm
某些其他非官方参考资料将 INT/INTEGER 描述为 NUMBER(38) 的同义词。
有人可以告诉我是否确实不能为 INT 数据类型指定精度吗?
解决方案
Oracle 文档指出:
创建表和集群的 SQL 语句也可以使用来自 IBM 产品 SQL/DS 和 DB2 的 ANSI 数据类型和数据类型。Oracle 识别不同于 Oracle 数据库数据类型名称的 ANSI 或 IBM 数据类型名称。它将数据类型转换为等效的 Oracle 数据类型
如下表所示,该句子指出,、、int
和integer
(令人惊讶?)smallint
都是 的同义词number(38)
,因此您无法为它们指定精度。对于您的用例,如果您想要一个十位数的整数,您应该使用number(10)
.
推荐阅读
- swift - Swift:从自定义实现调用协议函数的默认实现
- javascript - 我正在尝试在 next.js 应用程序中创建小部件
- reactjs - 将本地孩子的 propTypes 分配给父组件
- python - 在单行中获取列名 - DataFrame pivot
- angular - 如何解决 API 上的内部服务器错误
- java - 如何获取它在我的 jar 文件中的文件?
- python - Python 代码可以在 HTML 之类的 CSS 文件中吗?
- flutter - 如何让 SingleChildScrollView 在 Flutter 中与小部件嵌套的列上工作
- jquery - 使用 jQuery 提交后重置表单
- c++ - 为什么没有 realloc 等同于 new/delete 系列?