ITPub博客

首页 > 数据库 > Oracle > PLSQL Language Reference-PL/SQL语言基础-条件编译-条件编译举例

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

原创 Oracle 作者:LuiseDalian 时间:2014-03-08 08:35:50 0 删除 编辑

条件编译举例

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博客 ” ,链接:https://blog.itpub.net/17013648/viewspace-1103464/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2012-02-06

  • 博文量
    1986
  • 访问量
    6043830