Sorry for the meaningless title, but I couldn't think up a better one. I'm using Oracle 11g r2.
The following query raise ORA-00932 error:
SELECT BBB.FIELD1 FROM TABLE0 AAA
JOIN (SELECT * FROM (SELECT AAA.*, RANK() OVER (PARTITION BY SUBSTR(FIELD1,1,1) ORDER BY SUBSTR(FIELD1,1,1),ROWNUM) AS RANK
FROM TABLE1@DBLINK AAA WHERE UPPER(NAME)!='XXX')
WHERE RANK<=1) BBB ON CAST(CAST(CAST(SUBSTR(BBB.FIELD1,2,LENGTH(BBB.FIELD1)-2) AS NUMBER) AS VARCHAR2(10))||SUBSTR(BBB.FIELD1,LENGTH(BBB.FIELD1)) AS VARCHAR2(4000))=CAST(CAST(CAST(SUBSTR(AAA.FIELD0,2,LENGTH(AAA.FIELD0)-2) AS NUMBER) AS VARCHAR2(10))||SUBSTR(AAA.FIELD0,LENGTH(AAA.FIELD0)) AS VARCHAR2(4000));
However, the following query works perfectly fine.
SELECT * FROM TABLE0 AAA
JOIN (SELECT * FROM (SELECT AAA.*, RANK() OVER (PARTITION BY SUBSTR(FIELD1,1,1) ORDER BY SUBSTR(FIELD1,1,1),ROWNUM) AS RANK
FROM TABLE1@DBLINK AAA WHERE UPPER(NAME)!='XXX')
WHERE RANK<=1) BBB ON CAST(CAST(CAST(SUBSTR(BBB.FIELD1,2,LENGTH(BBB.FIELD1)-2) AS NUMBER) AS VARCHAR2(10))||SUBSTR(BBB.FIELD1,LENGTH(BBB.FIELD1)) AS VARCHAR2(4000))=CAST(CAST(CAST(SUBSTR(AAA.FIELD0,2,LENGTH(AAA.FIELD0)-2) AS NUMBER) AS VARCHAR2(10))||SUBSTR(AAA.FIELD0,LENGTH(AAA.FIELD0)) AS VARCHAR2(4000));
The only difference is that I selected all (*) columns instead of specifying one specific column. Why is this happening?
EDIT
The error raised is (exactly as it is):
ORA-00932: inconsistent datatypes: expected got
ORA-02063: preceding line from DBLINK
00932. 00000 - "inconsistent datatypes: expected %s got %s"
*Cause:
*Action: