2015-08-13 178 views
0

我試圖創建下表。但顯示的錯誤消息「無法識別的標記:‘16M’在SQL中使用BLOB數據類型

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

如果試圖存儲玩具的圖片,請看下面的內容:http://www.dba-oracle.com/t_storing_insert_photo_pictures_tables.htm – FirebladeDan

回答

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大對象數據類型的語法是在其整體:

BLOB syntax

換句話說,您無法指定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。在繼續沿着這條道路走下去之前,有必要閱讀一下那裏的一些信息/意見。