Quote:
|
CASE expression is not evaluated until the results are being returned to the client, but by that time all subqueries' results must be available.
|
I tested on DB2 Express-C 9.7.4 for Windows.
Example 3 is interesting.
Example 1: This worked.
Code:
------------------------------ Commands Entered ------------------------------
SELECT CASE
WHEN 88 = 72 THEN
'0' + 'a'
ELSE '0' + '1'
END
FROM SYSIBM.SYSDUMMY1
;
------------------------------------------------------------------------------
1
------------------------------------------
1
1 record(s) selected.
Example 2: But, this got error(SQL0420N).
Code:
------------------------------ Commands Entered ------------------------------
SELECT CASE
WHEN 88 = 72 THEN
(SELECT '0' + 'a'
FROM SYSIBM.SYSDUMMY1
)
ELSE (SELECT '0' + '1'
FROM SYSIBM.SYSDUMMY1
)
END
FROM SYSIBM.SYSDUMMY1
;
------------------------------------------------------------------------------
1
------------------------------------------
SQL0420N Invalid character found in a character string argument of the
function "DECFLOAT". SQLSTATE=22018
Example 3: This worked.
Code:
SELECT CASE
WHEN 88 = 72 THEN
'0' + (SELECT 'a' FROM SYSIBM.SYSDUMMY1)
ELSE (SELECT '0' + '1'
FROM SYSIBM.SYSDUMMY1
)
END
FROM SYSIBM.SYSDUMMY1
;
------------------------------------------------------------------------------
1
------------------------------------------
1
1 record(s) selected.