create table "test1" (
"A"  integer,
"B"  char(32),
"DOC_DATA"   BLOB(100M)
)
 这样建表正确吗?这个BLOB类型的应该怎么来定义才行呢??
请大家多指教啊

解决方案 »

  1.   

    "DOC_DATA"  BLOB就可以 
      

  2.   

    囧integer,Oracle不支持。
    楼主用的是Oracle?
      

  3.   

    SQL> create table "test1" (
      2  "A"  integer,
      3  "B"  char(32),
      4  "DOC_DATA"  BLOB
      5  )
      6  /Table createdSQL> 
      

  4.   

    更囧了。差点误导人了。
    PS:顺便翻了下资料学习了把:
    integer是ANSI支持的数据类型,Oracle兼容,但实际存储的是NUMBER类型,测试如下:
    SQL> create table "test1" (
      2  "A"  integer,
      3  "B"  char(32),
      4  "DOC_DATA"  BLOB
      5  )
      6  /Table created.SQL> DESC "test1";
     Name                                      Null?    Type
     ----------------------------------------- -------- ---------------------------- A                                                  NUMBER(38)
     B                                                  CHAR(32)
     DOC_DATA                                           BLOBSQL> SELECT dbms_lob.substr(DBMS_METADATA.GET_DDL('TABLE','test1')) FROM dual;DBMS_LOB.SUBSTR(DBMS_METADATA.GET_DDL('TABLE','TEST1'))
    --------------------------------------------------------------------------------
      CREATE TABLE "AIMIG"."test1"
       (    "A" NUMBER(*,0),
            "B" CHAR(32),
            "DOC_DATA" BLOB
       ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
      STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
      PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
      TABLESPACE "MY_TBS"
     LOB ("DOC_DATA") STORE AS (
      TABLESPACE "MY_TBS" ENABLE STORAGE IN ROW CHUNK 8192 PCTVERSION 10DBMS_LOB.SUBSTR(DBMS_METADATA.GET_DDL('TABLE','TEST1'))
    --------------------------------------------------------------------------------  NOCACHE LOGGING
      STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
      PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT))SQL>而在PL/SQL Developer里看到:
    create table test1
    (
      A        INTEGER,
      B        CHAR(32),
      DOC_DATA BLOB
    )
    tablespace MY_TBS
      pctfree 10
      pctused 40
      initrans 1
      maxtrans 255
      storage
      (
        initial 64K
        minextents 1
        maxextents unlimited
      );
    看样子PL/SQL Developer又把Oracle内部存储的格式“翻译”下。
    再MARK下,关于数据类型的一些说明:
    http://download.oracle.com/docs/cd/B19306_01/server.102/b14195/sqlqr06.htm
      

  5.   

    非常感谢大家的分析。
    可不知道blob类型的字段建表时怎么就不可以了。
    beyondme6对blob类型了解吗?
      

  6.   

    create table "test1" ( 
    "A"  number, 
    "B"  varchar2(32), 
    "DOC_DATA"  blob