我试图创建下表。但显示的错误信息是"无法识别的令牌:" 16M"
CREATE TABLE TOY_DTLS
(
TOY_ID NUMBER(4) PRIMARY KEY,
TOY_NAME VARCHAR2(30) NOT NULL UNIQUE,
TOY_PRICE NUMBER(7,2) CHECK(TOY_PRICE>10),
DISCOUNT_PRICE NUMBER(5,2) CHECK(DISCOUNT_PRICE<90),
AGEGROUP NUMBER(3) DEFAULT 5,
TOY_RATING NUMBER(1) CHECK(TOY_RATING>=1 AND TOY_RATING<=5),
CATEGORY CHAR(1) CHECK(CATEGORY='I' OR CATEGORY='O' OR CATEGORY='B'),
TOY_PIC BLOB(16M)
);
答案 0 :(得分:2)
在11gr2和12c中运行此代码时,错误为ORA-00907;没有提到未被识别的令牌。
SQL> CREATE TABLE TOY_DTLS
2 (
3 TOY_ID NUMBER(4) PRIMARY KEY,
4 TOY_NAME VARCHAR2(30) NOT NULL UNIQUE,
5 TOY_PRICE NUMBER(7,2) CHECK(TOY_PRICE>10),
6 DISCOUNT_PRICE NUMBER(5,2) CHECK(DISCOUNT_PRICE<90),
7 AGEGROUP NUMBER(3) DEFAULT 5,
8 TOY_RATING NUMBER(1) CHECK(TOY_RATING>=1 AND TOY_RATING<=5),
9 CATEGORY CHAR(1) CHECK(CATEGORY='I' OR CATEGORY='O' OR CATEGORY='B'),
10 TOY_PIC BLOB(16M)
11 );
TOY_PIC BLOB(16M)
*
ERROR at line 10:
ORA-00907: missing right parenthesis
出现此错误的原因是16M
是不必要的。查看the data type documentation大对象数据类型的语法是完整的:
换句话说,您无法指定LOB的最大大小。
如果删除BLOB的大小,则表格会创建:
SQL> CREATE TABLE TOY_DTLS
2 (
3 TOY_ID NUMBER(4) PRIMARY KEY,
4 TOY_NAME VARCHAR2(30) NOT NULL UNIQUE,
5 TOY_PRICE NUMBER(7,2) CHECK(TOY_PRICE>10),
6 DISCOUNT_PRICE NUMBER(5,2) CHECK(DISCOUNT_PRICE<90),
7 AGEGROUP NUMBER(3) DEFAULT 5,
8 TOY_RATING NUMBER(1) CHECK(TOY_RATING>=1 AND TOY_RATING<=5),
9 CATEGORY CHAR(1) CHECK(CATEGORY='I' OR CATEGORY='O' OR CATEGORY='B'),
10 TOY_PIC BLOB
11 );
Table created.
围绕图像是否应存储在数据库中存在a lot of discussion。在继续沿着这条道路走下去之前,有必要阅读一些信息/意见。