select xc.*
   from (select xmltype(bfilename('VDIR1','ruanshili.xml'),nls_charset_id('ZHS16GBK')) x from dual) t, xmltable('/TRS/REC'
    passing x
    columns "作者" varchar2(20) path '作者',
            "修改日期" char(10) path '修改日期',
            "分类" varchar2(30) path '分类',
            "发表日期" char(10) path '发表日期',
            "字数" number(4) path '字数',
            "录入员" varchar2(20) path '录入员',
            "录入日期" char(10) path '录入日期',
            "日期" char(10) path '日期',
            "来源" varchar2(30) path '来源',
            "标题" varchar2(100) path '标题',
            "正文" BLOB path '正文',
            "正文字数" number(4) path '正文字数',
           "状态" char path '状态',
   "Info_ID" char(30) path 'Info_ID') xc上述的SQL代码是读取XML文件  其中正文的字数在5000--20000查询时报错“ORA-00932: 数据类型不一致: 应为 -, 但却获得 BLOB”请各位大大帮帮忙!! 谢谢!!

解决方案 »

  1.   

    blob类型是无法直接查看的
    --不过如果好像11g取消了这个设置
      

  2.   

    我现在用的是10g
    如果xml中的字段个数超大 比如说 正文的字数一般在5000--20000  要导入到oracle对应的表中正文字段正文字段是 blob类型! 有没有解决的办法!! 请各位大大帮帮忙!!! 谢谢!!!
      

  3.   

    这个google下就有好多方法,选个适合你的
    我说的无法直接查看是不能在sqlplus
    通过select ...
      

  4.   


    INSERT INTO ruanshili(作者,修改日期,分类,发表日期,字数,录入员,录入日期,日期,来源,标题,正文,正文字数,状态,Info_ID)
       (select xc.*
       from (select xmltype(bfilename('VDIR1','ruanshili.xml'),nls_charset_id('ZHS16GBK')) x from dual) t, xmltable('/TRS/REC'
        passing x
        columns "作者" varchar2(20) path '作者',
                "修改日期" char(10) path '修改日期',
                "分类" varchar2(30) path '分类',
                "发表日期" char(10) path '发表日期',
                "字数" number(4) path '字数',
                "录入员" varchar2(20) path '录入员',
                "录入日期" char(10) path '录入日期',
                "日期" char(10) path '日期',
                "来源" varchar2(30) path '来源',
                "标题" varchar2(100) path '标题',
                "正文" BLOB path '正文',
                "正文字数" number(4) path '正文字数',
               "状态" char path '状态',
       "Info_ID" char(30) path 'Info_ID') xc)我选择直接插入,也是报同样的错误!!
      

  5.   


    SQL> create table blob_table(
      2    id number primary key,
      3    blob_cl blob not null
      4  );表已创建。--to_blob()这个是关键
    SQL> insert into blob_table values(1,to_blob('11111000011111'));已创建 1 行。
      

  6.   

    INSERT INTO ruanshili(作者,修改日期,分类,发表日期,字数,录入员,录入日期,日期,来源,标题,正文,正文字数,状态,INFO_ID)
       (select xc.作者,xc.修改日期,xc.分类,xc.发表日期,xc.字数,xc.录入员,xc.录入日期,xc.日期,xc.来源,xc.标题,to_blob(xc.正文),xc.正文字数,xc.状态,xc.INFO_ID from (select xmltype(bfilename('VDIR1','567.xml'),nls_charset_id('ZHS16GBK')) x from dual) t, xmltable('/TRS/REC'
        passing x
        columns "作者" varchar2(20) path '作者',
                "修改日期" char(10) path '修改日期',
                "分类" varchar2(30) path '分类',
                "发表日期" char(10) path '发表日期',
                "字数" number(4) path '字数',
                "录入员" varchar2(20) path '录入员',
                "录入日期" char(10) path '录入日期',
                "日期" char(10) path '日期',
                "来源" varchar2(30) path '来源',
                "标题" varchar2(100) path '标题',
                "正文" BLOB path '正文',
                "正文字数" number(4) path '正文字数',
               "状态" char path '状态',
       "INFO_ID" char(10) path 'INFO_ID') xc)将正文字段添加to_blob  还是报同样的错误1!!
      

  7.   

    由于正文字段中字符数量太大!  没有办法!  如果把"正文" BLOB path '正文',
    改为 "正文" varchar(4000) path '正文'就会提示“ORA-25137: 数据值超出范围
    哪位大大有没有解决办法?  谢谢了!!!
      

  8.   

    ORA-00932: 数据类型不一致: 应为 -, 但却获得 CLOB
      

  9.   

    select xmltype(bfilename('VDIR1','ruanshili.xml'),nls_charset_id('ZHS16GBK')) x from dual你单执行这个语句有问题?
      

  10.   

    ORA-22285:对不存在的目录或文件进行FILEOPEN操作 
    yes no cancel