このブログ投稿では、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をインストールする