CREATE OR REPLACE FUNCTION return_junk RETURN dual.dummy%TYPE $IF dbms_db_version.ver_le_10 $THEN $ELSE RESULT_CACHE $END IS lc_dummy dual.dummy%TYPE; BEGIN SELECT dummy INTO lc_dummy FROM dual; RETURN lc_dummy; END return_junk; /In the accompanying image, you can see I've determined what the interpreted code will be, compiled in 11g, the RESULT_CACHE feature is present. Had I compiled this in 10g, line 2 & 3 will be completely clear and you would not have 11g technology causing syntax errors in your 10g database.
Of course, so you can remind yourself during the migration to 11g to test these concepts in development first, you would code with an error directive:
CREATE OR REPLACE FUNCTION return_junk RETURN dual.dummy%TYPE $IF dbms_db_version.ver_le_10 $THEN $ELSE RESULT_CACHE $END IS lc_dummy dual.dummy%TYPE; BEGIN $IF dbms_db_version.ver_le_10 $THEN $ELSE $ERROR '11g upgrade in process. This component needs further testing' $END $END SELECT dummy INTO lc_dummy FROM dual; RETURN lc_dummy; END return_junk; /
Which on compilation will give
Error(9,4): PLS-00179: $ERROR: 11g upgrade in process. This component needs further testing
At least you added in the code when you became aware of it a it didn't get forgotten about!
No comments:
Post a Comment