sql >> Databáze >  >> RDS >> Oracle

Jak volat uloženou proceduru Oracle v Pythonu?

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
  1. SQL:Jaké je výchozí pořadí dotazů?

  2. pip install mysqlclient vrací závažnou chybu C1083:Nelze otevřít soubor:'mysql.h':Žádný takový soubor nebo adresář

  3. Indexování a další:GIN indexy

  4. Pomocí CRYPT_GEN_RANDOM() vytvořte kryptografické náhodné číslo na serveru SQL Server