変数の優先順位を試す

やってみなくちゃわからない。大科学実験のノリ。
同名の変数が現れたとき(まず避けるべきだが)狭いスコープに宣言があればそちらが優先されるというのは本当か?

    CREATE OR REPLACE TEST_VARIABLE
        V_VARIABLE VARCHAR2(8);
        PROCEDURE TEST_VARIABLE_SUB(V_VARIABLE VARCHAR2)
        IS
        BEGIN
            DBMS_OUTPUT.PUT_LINE('(BLOCK)V_VARIABLE=' | | V_VARIABLE);
        END;
    BEGIN
        V_VARIABLE := 'LOCAL';
        TEST_VARIABLE_SUB('BLOCK');
        DBMS_OUTPUT.PUT_LINE('(LOCAL)V_VARIABLE=' | | V_VARIABLE);
    END TEST_VARIABLE;
    /

上記プロシージャーを実行すると出力結果は以下のようになるのでどうやら本当らしい。
SQL*PLUS で無名関数で試そうとしたら接続に失敗したので、プロシージャーを作って実行した。

    (BLOCK)V_VARIABLE=BLOCK
    (LOCAL)V_VARIABLE=LOCAL

  • 最終更新:2015-07-03 13:03:01

このWIKIを編集するにはパスワード入力が必要です

認証パスワード