您的位置:首页 > 数据库 > Oracle

关于ORACLE UNION ALL 遇到的问题

2011-03-21 18:51 302 查看
前两天在写视图的时候,用到了UNION ALL 发现了一个不注意的事情,除了我知道的需要列一样,如果union all的两条查询语句的列对应的数据类型不一样也不能通过会报:ORA-12704: 字符集不匹配这个错误;我们必须要使用cast 转换成相同的数据类型才行,具体方式请开如下代码:
SELECT   PROJ2.PROJECT_CODE XMBM,
PROJ1.PROJECT_CODE DTGCBH,
'' WJLX,
CAST (BS.BIAOD_ID BDBM as varchar2(20)),
FILE_.FILE_NAME WJMC,
FILE_.FILE_PATH WJDZ,
USER_.USER_NAME BZR,
ORG.ORGANIZATION_NAME BZRDW,
FILE_.CREATE_TIME SZSJ
FROM                  T_JZL_GONGCJGYSSQ BS
INNER JOIN
T_BNS_PRJM_PROJECT PROJ1
ON BS.GONGC_ID = PROJ1.ID
INNER JOIN
T_BNS_PRJM_PROJECT PROJ2
ON PROJ1.SUPER_PROJECTID = PROJ2.ID
LEFT JOIN
T_CTL_FILES FILE_
ON FILE_.GROUPID = BS.GROUPID
LEFT JOIN
T_PDC_USER USER_
ON USER_.ID = BS.BAOS_SENDER
LEFT JOIN
T_PDC_ORGANIZATION ORG
ON ORG.ID IN
(SELECT   ORGANIZATION_ID
FROM   T_PDC_ORGANIZATION_USER
WHERE   USER_ID = BS.BAOS_SENDER AND DELETE_FLAG = '0')
WHERE       BS.DELETE_FLAG = '0'
AND PROJ1.DELETE_FLAG = '0'
AND PROJ2.DELETE_FLAG = '0'
UNION ALL
SELECT   PROJ2.PROJECT_CODE XMBM,
PROJ1.PROJECT_CODE DTGCBH,
'02' WJLX,
CAST ('' as varchar2(20)) BDBM,
FILE_.FILE_NAME WJMC,
FILE_.FILE_PATH WJDZ,
USER_.USER_NAME BZR,
ORG.ORGANIZATION_NAME BZRDW,
FILE_.CREATE_TIME SZSJ
FROM                  T_YXM_JINGYSSQ SQ
INNER JOIN
T_BNS_PRJM_PROJECT PROJ1
ON SQ.GONGC_ID = PROJ1.ID
INNER JOIN
T_BNS_PRJM_PROJECT PROJ2
ON PROJ1.SUPER_PROJECTID = PROJ2.ID
LEFT JOIN
T_CTL_FILES FILE_
ON FILE_.GROUPID = SQ.GROUPID
LEFT JOIN
T_PDC_USER USER_
ON USER_.ID = SQ.SIGLE_NAME
LEFT JOIN
T_PDC_ORGANIZATION ORG
ON ORG.ID IN
(SELECT   ORGANIZATION_ID
FROM   T_PDC_ORGANIZATION_USER
WHERE   USER_ID = SQ.SIGLE_NAME AND DELETE_FLAG = '0')
WHERE       SQ.DELETE_FLAG = '0'
AND PROJ1.DELETE_FLAG = '0'
AND PROJ2.DELETE_FLAG = '0'
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  oracle join user file delete path