使用序列时Oracle将BLOB大小限制为4000字节的任何原因?

时间:2012-01-19 09:46:05

标签: oracle ado.net blob

我有一种奇怪的情况。我正在使用Oracle和ADO.NET(Visual Studio Dataset)。我有一个包含BLOB字段的表。另外,我有一个表的ID序列。在ADO.NET中,我有一个这个表的tableAdapter。在插入查询中,我希望它生成ID本身,所以我在插入中写了MYSEQ.NEXTVAL(其中:ID应该是)。它工作正常。

但事实是,当我在查询中使用序列时,BLOB插错了。无论大小是多少,它都会插入4000个字节。这真的很奇怪。并且,当我不在插入查询中使用序列时,它很好。我用另一个查询获取NextID并将结果提供给insert的ID字段。它工作正常。但我只是想知道它的原因。它看起来真的很愚蠢。

我不确定这个名字是ADO.NET。我在谈论我在Visual Studio中使用的tableadapters和数据集。对不起,如果我错了。

INSERT INTO IPYYB_KOM_BASVURUEVRAK
                     (ID, BASVURUID, EVRAK, DOSYAADI, TARIH, TANIM)
       VALUES        (:ID, :BASVURUID, :EVRAK, :DOSYAADI, :TARIH, :TANIM)

EVRAK是文件。这是工作代码。以下是无效代码。

INSERT INTO IPYYB_KOM_BASVURUEVRAK
                     (ID, BASVURUID, EVRAK, DOSYAADI, TARIH, TANIM)
       VALUES        (IPYYB_KOM_EVRAK_SEQ.NEXTVAL, :BASVURUID, :EVRAK, :DOSYAADI,
                      :TARIH, :TANIM)

这是序列,

CREATE SEQUENCE "MUBIS"."IPYYB_KOM_EVRAK_SEQ" MINVALUE 1 
                MAXVALUE 99999999999999999999999 INCREMENT BY 1 START WITH 21 
                CACHE 20 NOORDER NOCYCLE ;

这是表格,

CREATE TABLE "MUBIS"."IPYYB_KOM_BASVURUEVRAK"
  (
    "ID"        NUMBER NOT NULL ENABLE,
    "BASVURUID" NUMBER,
    "EVRAK" BLOB,
    "DOSYAADI" VARCHAR2(200 BYTE),
    "TARIH" DATE,
    "TANIM" VARCHAR2(200 BYTE),
    CONSTRAINT "IPYYB_KOM_BASVURUEVRAK_PK" PRIMARY KEY ("ID") USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) TABLESPACE "USERS" ENABLE
  )
  SEGMENT CREATION IMMEDIATE 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 FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT
  )
  TABLESPACE "USERS" LOB
  (
    "EVRAK"
  )
  STORE AS BASICFILE
  (
    TABLESPACE "USERS" ENABLE STORAGE IN ROW CHUNK 8192 RETENTION NOCACHE LOGGING STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
  ) ;
CREATE UNIQUE INDEX "MUBIS"."IPYYB_KOM_BASVURUEVRAK_PK" ON "MUBIS"."IPYYB_KOM_BASVURUEVRAK"
  (
    "ID"
  )
  PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE
  (
    INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT
  )
  TABLESPACE "USERS" ;
CREATE UNIQUE INDEX "MUBIS"."SYS_IL0000097973C00003$$" ON "MUBIS"."IPYYB_KOM_BASVURUEVRAK"
  (
    PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) TABLESPACE "USERS" PARALLEL (DEGREE 0 INSTANCES 0) ;

0 个答案:

没有答案