V tomto příspěvku na blogu uvádím příklad volání uložené procedury Oracle v Pythonu. Příkladem je volání uložené procedury s parametry IN-OUT. Používám callproc knihovny cx_Oracle funkce pro volání procedury Oracle. Abychom vám umožnili otestovat tento příklad ve vašem systému, poskytuji také zdrojový kód databázové tabulky Oracle a uložené procedury.
Stáhněte si zdrojové tabulky Oracle použité v tomto příkladu z následujícího odkazu Stáhnout skript Scott Schema.
Příklad uložené procedury Oracle s parametry IN-OUT
Následující procedura Oracle použije dva parametry, (1) i_empno jako parametr IN číslo zaměstnance a (2) o_total_salary jako parametr OUT, aby se vrátila celková mzda zaměstnance.
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;
Nyní zavoláme tento postup v Pythonu pomocí cx_Oracle callproc funkce.
CX_Oracle syntaxe callproc
cursor.callproc('procedure_name', [argument_1, argument_2, ...])
Volání uložené procedury Oracle v Pythonu s příkladem parametrů IN-OUT
Následující program Python zavolá proceduru compute_sal a vytiskne vrácenou celkovou mzdu na obrazovku.
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()
Výstup
Total salary for the employee: 7788 is: 3080.0
Viz také:
- Nainstalujte cx_Oracle pro Python na Windows