Oracle
 sql >> база данни >  >> RDS >> Oracle

Как да извика съхранена процедура на Oracle в Python?

В тази публикация в блога давам пример за извикване на съхранена процедура на Oracle в Python. Примерът включва извикване на съхранена процедура с параметри IN-OUT. Използвам cx_Oracle library callproc функция за извикване на процедурата на Oracle. За да ви позволя да тествате този пример във вашата система, предоставям също изходния код на таблицата на базата данни на Oracle и съхранената процедура.

Изтеглете изходните таблици на Oracle използван в този пример от следната връзка Изтеглете скрипт за схема на Scott.

Пример за съхранявана процедура на Oracle с параметри IN-OUT

Следващата процедура на Oracle ще приеме двата параметъра, (1) i_empno като IN параметър номер на служител и (2) o_total_salary като OUT параметър, за да върне общата заплата на служителя.

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;

Сега ще извикаме тази процедура в Python с помощта на cx_Oracle callproc функция.

Синтаксис на CX_Oracle callproc

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

Извикване на Oracle Stored Procedure в Python с пример за IN-OUT параметри

Следната програма на 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

Вижте също:

  • Инсталирайте cx_Oracle за Python на Windows
  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Най-добра практика за пагинация в Oracle?

  2. ATAN() Функция в Oracle

  3. Как мога да разположа .NET приложение, което използва ODAC, без да инсталирам целия компонент на потребителя?

  4. Първичните ключове и индекси в езика на заявките Hive са възможни или не?

  5. Обработване на едновременната заявка, докато продължавате в базата данни на Oracle?