MERGE INTO A
USING (
SELECT B_1,B_2,B_3,SUM(B_4)
FROM B
GROUP BY B_1,B_2,B_3) srt
ON (
A.A_1 = B.B_1
AND NVL (A.A_2, 0) =
NVL (B.B_2, 0)
AND NVL (A.A_3, ' ') =
NVL (B.B_3, ' ') )
WHEN MATCHED
THEN 'DML STATEMENT';
上面抛出一个错误
原因:java.sql.SQLException:ORA-06502:PL/SQL:数字或值错误:字符到数字的转换错误 ORA-30926:无法在源表中获得一组稳定的行
但是当你用下面的 NVL(EXPR, -1) 替换上面的查询时,它可以正常工作。有什么理由可以预见我看不到?
MERGE INTO A
USING (
SELECT B_1,B_2,B_3,SUM(B_4)
FROM B
GROUP BY B_1,B_2,B_3) srt
ON (
A.A_1 = B.B_1
AND NVL (A.A_2, -1) =
NVL (B.B_2, -1)
AND NVL (A.A_3, ' ') =
NVL (B.B_3, ' ') )
WHEN MATCHED
THEN 'DML STATEMENT';