sql >> データベース >  >> RDS >> Oracle

PythonでOracleストアドプロシージャを呼び出す方法は?

    このブログ投稿では、PythonでOracleストアドプロシージャを呼び出す例を示しています。例には、IN-OUTパラメーターを使用したスト​​アード・プロシージャーの呼び出しが含まれます。 cx_Oracleライブラリcallprocを使用しています Oracleプロシージャを呼び出す関数。この例をシステムでテストできるようにするために、Oracleデータベーステーブルのソースコードとストアドプロシージャも提供しています。

    ソースOracleテーブルのダウンロード この例では、次のリンクから使用されています。スコットスキーマスクリプトをダウンロードします。

    IN-OUTパラメータを使用したOracleストアドプロシージャの例

    次のOracleプロシージャは、(1)INパラメータの従業員番号としてのi_empnoと(2)OUTパラメータとしてのo_total_salaryの2つのパラメータを取り、従業員の合計給与を返します。

    CREATE OR REPLACE PROCEDURE get_total_sal (i_empno IN emp.empno%TYPE,
    o_total_salary OUT NUMBER)
    IS
    CURSOR c_emp (p_empno emp.empno%TYPE)
    IS
    SELECT sal, comm
    FROM emp
    WHERE empno = p_empno;
    
    v_sal NUMBER;
    v_comm NUMBER;
    BEGIN
    OPEN c_emp (i_empno);
    
    FETCH c_emp
    INTO v_sal, v_comm;
    
    CLOSE c_emp;
    
    o_total_salary := (v_sal + NVL (v_comm, 0));
    END get_total_sal;

    次に、cx_Oraclecallprocを使用してPythonでこのプロシージャを呼び出します 機能。

    CX_Oraclecallproc構文

    cursor.callproc('procedure_name', [argument_1, argument_2, ...])

    IN-OUTパラメータの例を使用してPythonでOracleストアドプロシージャを呼び出す

    次のPythonプログラムは、compute_salプロシージャを呼び出し、返された合計給与を画面に出力します。

    import cx_Oracle
    
    con = cx_Oracle.connect('scott/tiger@localhost/orcl')
    
    cur = con.cursor()
    n_empno = 7788
    n_total_salary = cur.var(cx_Oracle.NUMBER)
    cur.callproc('compute_sal', [n_empno, n_total_salary])
    
    print ("Total salary for the employee: ", n_empno, "is: ", n_total_salary.getvalue())
    cur.close()
    con.close()

    出力

    Total salary for the employee:  7788 is:  3080.0

    関連項目:

    • Windowsにcx_OracleforPythonをインストールする
    1. SQL Server(T-SQL)のクエリで照合を指定する方法

    2. パラメータなしでSQLインジェクションを回避する

    3. Oracle(Old?)Joins-変換用のツール/スクリプト?

    4. PostgreSQLを使用したMoodleの高可用性データベースの構築