oracle union查询中BLOB字段出错问题,ora-00932:数据类型不一致:应为 -,但却获得BLOB

本文探讨了在Oracle数据库中使用UNION操作时遇到的数据类型不一致错误(ORA-00932)。该错误源于Oracle不允许直接比较BLOB类型。文章提供了简单有效的解决方案:使用UNION ALL替代。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

select blobf from table1

union

select blobf from table2

出错:ora-00932:数据类型不一致:应为 -,但却获得BLOB

因为:union会对字段类型进行比较(相等和不等判断),oracle不支持对大数据类型的比较操作。

解决办法:使用union all就可以了。union all不涉及比较。 
 

CREATE OR REPLACE TYPE TYPE_MTRL_ROW AS OBJECT(pageNumber NUMBER, fenlei VARCHAR2(1024), bianma VARCHAR2(128), banben VARCHAR2(32), mingcheng VARCHAR2(128), guige VARCHAR2(4000), pinpai VARCHAR2(4000), caizhi VARCHAR2(512), zhuangtai CHAR(9), danwei VARCHAR2(1024), chuangjianshijian DATE, chuangjianren VARCHAR2(64), wlyxj VARCHAR2(1024)); CREATE OR REPLACE TYPE TYPE_MTRL_TABLE AS TABLE OF TYPE_MTRL_ROW; CREATE OR REPLACE FUNCTION PLM1."RUNA_SEL_MTRL"( P_BIANMA IN VARCHAR2, --编码 P_MINGCHENG IN VARCHAR2, --名称 P_GUIGE IN VARCHAR2, --规格 P_WLYXJ IN VARCHAR2, --物料优先级 P_startIndex IN INTEGER, --分页起始行 P_endIndex IN INTEGER --分页截止行 ) RETURN TYPE_MTRL_TABLE AS TEMP_ROW TYPE_MTRL_ROW; -- 定义单行 TEMP_TABLE TYPE_MTRL_TABLE; -- 定义返回结果,并初始化 v_sql VARCHAR2(2000); -- 定义单行 v_result VARCHAR2(2000); BEGIN v_sql := 'select * from (select row_number() over(order by chuangjianshijian desc) pageNumber, fenlei, bianma, banben, mingcheng, guige, guige as pinpai, caizhi, zhuangtai, danwei, chuangjianshijian, chuangjianren, wlyxj from "wuliao" where 1 = 1'; IF P_BIANMA IS NOT NULL THEN v_sql := v_sql || ' and bianma LIKE ''%' || P_BIANMA || '%'''; END IF; IF P_MINGCHENG IS NOT NULL THEN v_sql := v_sql || ' and mingcheng LIKE ''%' || P_MINGCHENG || '%'''; END IF; IF P_WLYXJ IS NOT NULL THEN v_sql := v_sql || ' and wlyxj LIKE ''%' || P_WLYXJ || '%'''; END IF; IF P_GUIGE IS NOT NULL THEN FOR i IN 1..LENGTH(P_GUIGE) + 1 LOOP v_result := REGEXP_SUBSTR(P_GUIGE, '[^ ]+', 1, i); EXIT WHEN v_result IS NULL; v_sql := v_sql || ' and guige LIKE ''%' || v_result || '%'''; END LOOP; END IF; v_sql := v_sql || ') aa where pageNumber between ' || P_startIndex || ' + 1 and ' || P_endIndex; EXECUTE IMMEDIATE v_sql BULK COLLECT INTO TEMP_TABLE; RETURN TEMP_TABLE; END; 上述数据库函数执行时,提示异常“ORA-00932: 数据类型一致: 应为 -, 但却获得 -”,请分析错误原因
07-03
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值