HOME >> Tips >> Oracle

SQL*Plus でストアドプロシージャを実行する方法

 
文書番号:20236



SQL*Plus でストアドプロシージャを実行する方法です。
一時的な実行の確認や、バッチ実行したい際などに使用します。

【実行手順】

    今回実行するストアドプロシージャを作成します。

    OUT引数がないプロシージャを作成します。
    
    CREATE OR REPLACE PROCEDURE SAMPLE1(
         I_CODE IN VARCHAR2
        ,I_NAME IN VARCHAR2
    )
    AS
    BEGIN
        DBMS_OUTPUT.PUT_LINE('CODE:' || I_CODE);
        DBMS_OUTPUT.PUT_LINE('NAME:' || I_NAME);
    END;
    /
    
    実行例
    
    SQL> EXECUTE SAMPLE1('0001','たろう');
    CODE:0001
    NAME:たろう
    

    OUT引数があるプロシージャを作成します。

    問い合わせ用のテーブルを作成します(実行確認用)
    
    CREATE TABLE emp(
         CODE CHAR(4)
        ,NAME VARCHAR2(50)
        ,CONSTRAINT PK_emp PRIMARY KEY (CODE)
    ) 
    /
    INSERT INTO emp VALUES('0001','たろう');
    INSERT INTO emp VALUES('0002','はなこ');
    INSERT INTO emp VALUES('0003','のぶなが');
    
    ストアドプロシージャを作成します
    
    CREATE OR REPLACE PROCEDURE SAMPLE2(
         I_CODE IN  VARCHAR2
        ,O_NAME OUT VARCHAR2
    )
    AS
    BEGIN
    
        DBMS_OUTPUT.PUT_LINE('CODE:' || I_CODE);
    
        SELECT NAME
        INTO   O_NAME
        FROM   emp
        WHERE  CODE = I_CODE;
    END;
    /
    
    実行例
    
    SQL> VARIABLE V_NAME VARCHAR2(10);
    SQL> EXECUTE SAMPLE2('0002',:V_NAME);
    CODE:0001
    
    SQL> PRINT V_NAME;
    V_NAME
    ------------------
    はなこ