Hướng dẫn calling oracle function from python - gọi hàm oracle từ python

Tóm tắt: Trong hướng dẫn này, bạn sẽ tìm hiểu cách sử dụng Cursor.callfunc() để gọi chức năng được lưu trữ PL/SQL từ chương trình Python.: in this tutorial, you will learn how to use the Cursor.callfunc() to call a PL/SQL stored function from a Python program.

Thiết lập chức năng PL/SQL

Tuyên bố sau đây tạo ra một chức năng được lưu trữ mới gọi là get_revenue() trả về doanh thu bán hàng của một nhân viên bán hàng trong một năm cụ thể.

CREATE OR REPLACE FUNCTION get_revenue( salesman_code NUMBER, year NUMBER) RETURN NUMBER IS l_revenue NUMBER; BEGIN SELECT SUM(quantity*unit_price) INTO l_revenue FROM orders INNER JOIN order_items USING (order_id) WHERE salesman_id = salesman_code AND EXTRACT(YEAR FROM order_date) = YEAR; RETURN l_revenue; END;

Code language: SQL (Structured Query Language) (sql)

Khối ẩn danh này kiểm tra chức năng được lưu trữ get_revenue() có được doanh thu bán hàng của ID nhân viên bán hàng 54 trong năm 2017:

SET SERVEROUTPUT ON; DECLARE l_revenue NUMBER; BEGIN l_revenue := get_revenue(54, 2017); dbms_output.put_line(l_revenue); END;

Code language: SQL (Structured Query Language) (sql)

Đây là đầu ra:

1160350.79

Code language: Python (python)

Để thực hiện chức năng được lưu trữ PL/SQL, bạn sử dụng phương thức

SET SERVEROUTPUT ON; DECLARE l_revenue NUMBER; BEGIN l_revenue := get_revenue(54, 2017); dbms_output.put_line(l_revenue); END;

Code language: SQL (Structured Query Language) (sql)
0. Mã sau đây minh họa cách gọi chức năng được lưu trữ get_revenue() và hiển thị doanh thu của nhân viên bán hàng 54 trong năm 2017:

import cx_Oracle import config as cfg def get_revenue(salesman_id, year): """ Get revenue by salesman in a specific year :param salesman_id: :param year: :return: the revenue """ revenue = None try: # create a connection to the Oracle Database with cx_Oracle.connect(cfg.username, cfg.password, cfg.dsn, encoding=cfg.encoding) as connection: # create a new cursor with connection.cursor() as cursor: # call the function revenue = cursor.callfunc('get_revenue', float, [salesman_id, year]) except cx_Oracle.Error as error: print(error) return revenue if __name__ == '__main__': sales_revenue = get_revenue(54, 2017) print(sales_revenue) # 1160350.79

Code language: Python (python)

Trong ví dụ này:

Đầu tiên, thiết lập kết nối với cơ sở dữ liệu Oracle bằng cách gọi phương thức

SET SERVEROUTPUT ON; DECLARE l_revenue NUMBER; BEGIN l_revenue := get_revenue(54, 2017); dbms_output.put_line(l_revenue); END;

Code language: SQL (Structured Query Language) (sql)
2 với các tham số được cung cấp bởi mô -đun

SET SERVEROUTPUT ON; DECLARE l_revenue NUMBER; BEGIN l_revenue := get_revenue(54, 2017); dbms_output.put_line(l_revenue); END;

Code language: SQL (Structured Query Language) (sql)
3:

username = 'OT' password = '' dsn = 'localhost/pdborcl' port = 1512 encoding = 'UTF-8'

Code language: Python (python)

Thứ hai, tạo một đối tượng

SET SERVEROUTPUT ON; DECLARE l_revenue NUMBER; BEGIN l_revenue := get_revenue(54, 2017); dbms_output.put_line(l_revenue); END;

Code language: SQL (Structured Query Language) (sql)
4 mới bằng phương thức

SET SERVEROUTPUT ON; DECLARE l_revenue NUMBER; BEGIN l_revenue := get_revenue(54, 2017); dbms_output.put_line(l_revenue); END;

Code language: SQL (Structured Query Language) (sql)
5.

Thứ ba, hãy gọi hàm được lưu trữ get_revenue() bằng phương thức Cursor.callfunc():

cursor.callfunc('get_revenue', float, [salesman_id, year])

Code language: Python (python)

Trong phương thức Cursor.callfunc(): Đối số đầu tiên là tên hàm được lưu trữ, đối số thứ hai là loại giá trị được trả về và đối số thứ ba là danh sách các đối số được truyền cho hàm được lưu trữ.

Mã sau đây kiểm tra chức năng get_revenue() với nhân viên bán hàng 54 và năm 2017:

sales_revenue = get_revenue(54, 2017) print(sales_revenue) # 1160350.79

Code language: Python (python)

Trong hướng dẫn này, bạn đã học được cách sử dụng phương thức Cursor.callfunc() để gọi hàm được lưu trữ PL/SQL trong Python.

Hướng dẫn này có hữu ích không?

Làm thế nào để bạn gọi một chức năng trong python pl sql?

Gọi thủ tục PL/SQL trong ví dụ Python trước tiên, kết nối với cơ sở dữ liệu Oracle bằng cách gọi phương thức cx_oracle.connect () với các tham số được cung cấp bởi mô -đun cấu hình. Thứ hai, tạo một đối tượng con trỏ mới bằng cách gọi kết nối. phương thức con trỏ ().connect to the Oracle Database by calling the cx_Oracle. connect() method with the parameters provided by the config module. Second, create a new Cursor object by calling the Connection. cursor() method.

Python có thể kết nối với Oracle không?

Bắt đầu nhanh: Phát triển các ứng dụng Python cho cơ sở dữ liệu Oracle. Hướng dẫn này chỉ cho bạn cách kết nối các ứng dụng Python với cơ sở dữ liệu Oracle bằng giao diện CX_Oracle. Giao diện này cho phép bạn nhanh chóng phát triển các ứng dụng thực thi các câu lệnh SQL hoặc PL/SQL.connect Python applications to Oracle Database using the cx_Oracle interface. This interface lets you quickly develop applications that execute SQL or PL/SQL statements.

Làm cách nào để truy vấn Oracle trong Python?

Điều này có thể được thực hiện thông qua tên mô -đun cx_oracle.Cơ sở dữ liệu Oracle: Để liên lạc với bất kỳ cơ sở dữ liệu nào thông qua chương trình Python của chúng tôi, chúng tôi yêu cầu một số đầu nối không có gì ngoài mô -đun CX_Oracle.Theo lệnh này, bạn có thể cài đặt gói CX-Oracle nhưng trước tiên bắt buộc phải cài đặt cơ sở dữ liệu Oracle trên PC.

Làm thế nào để bạn gọi một chức năng được lưu trữ trong Python?

Để gọi một quy trình được lưu trữ từ ứng dụng Python, hãy sử dụng chức năng IBM_DB.CallProc.Quy trình mà bạn gọi có thể bao gồm các tham số đầu vào (IN), tham số đầu ra (ra) và tham số đầu vào và đầu ra (INOUT).use ibm_db. callproc function. The procedure that you call can include input parameters (IN), output parameters (OUT), and input and output parameters (INOUT).