PLSQL Language Reference-PL/SQL语言基础-条件编译-条件编译举例

条件编译举例

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/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值