条件编译举例
BEGIN $IF DBMS_DB_VERSION.VER_LE_10_1 $THEN -- 选择指令开始 $ERROR '不支持的数据库版本' $END -- 错误指令 $ELSE DBMS_OUTPUT.PUT_LINE ( '版本 ' || DBMS_DB_VERSION.VERSION || '.' || DBMS_DB_VERSION.RELEASE || ' 被支持.' ); -- 这个commit语句从10.2开始支持 COMMIT WRITE IMMEDIATE NOWAIT; $END -- 选择指令结束 END;
|
--设置会话参数 --ALTER SESSION SET PLSQL_CCFLAGS = 'my_debug:FALSE, my_tracing:FALSE'; --ALTER SESSION SET PLSQL_CCFLAGS = 'my_debug:TRUE, my_tracing:FALSE'; --包规范 CREATE OR REPLACE PACKAGE my_pkg AS SUBTYPE my_real IS $IF DBMS_DB_VERSION.VERSION < 10 $THEN NUMBER; $ELSE BINARY_DOUBLE; $END
my_pi my_real; my_e my_real; END my_pkg;
--包体 CREATE OR REPLACE PACKAGE BODY my_pkg AS BEGIN $IF DBMS_DB_VERSION.VERSION < 10 $THEN my_pi := 3.14159265358979323846264338327950288420; my_e := 2.71828182845904523536028747135266249775; $ELSE my_pi := 3.14159265358979323846264338327950288420d; my_e := 2.71828182845904523536028747135266249775d; $END END my_pkg;
CREATE OR REPLACE PROCEDURE circle_area(radius my_pkg.my_real) IS my_area my_pkg.my_real; my_data_type VARCHAR2(30); BEGIN my_area := my_pkg.my_pi * (radius**2);
DBMS_OUTPUT.PUT_LINE ('半径: ' || TO_CHAR(radius) || ' 面积: ' || TO_CHAR(my_area));
$IF $$my_debug $THEN SELECT DATA_TYPE INTO my_data_type FROM USER_ARGUMENTS WHERE OBJECT_NAME = 'CIRCLE_AREA' AND ARGUMENT_NAME = 'RADIUS';
DBMS_OUTPUT.PUT_LINE('RADIUS参数的数据类型为: ' || my_data_type); $END END;
--执行存储过程2次, 修改环境变量,重新编译存储过程,再执行。 BEGIN circle_area(5); END;
|
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/17013648/viewspace-1103464/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/17013648/viewspace-1103464/