Thủ tục có thể trả về một giá trị trong MySQL không?

Trong hướng dẫn này, chúng ta sẽ xem xét cách chúng ta có thể trả về nhiều giá trị từ thủ tục được lưu trữ. Sau một ví dụ thực tế, chúng ta sẽ xem làm thế nào chúng ta có thể triển khai ví dụ tương tự trong PHP. Hãy đi sâu vào nó

Cũng đọc. Tạo thủ tục lưu trữ MySQL [Có ví dụ]

Trước khi chúng ta bắt đầu

Hàm được lưu trữ trong MySQL chỉ có thể trả về một giá trị. Vì vậy, khi bạn muốn chương trình của mình trả về nhiều giá trị, thủ tục được lưu sẵn sẽ hoạt động

Thủ tục lưu trữ hỗ trợ ba loại tham số, IN, OUT và INOUT trong đó OUT và INOUT được sử dụng để trả về các giá trị từ thủ tục lưu sẵn cho chương trình gọi

Nếu bạn không quen thuộc với các loại tham số khác nhau trong thủ tục lưu trữ, chúng tôi khuyên bạn nên đọc hướng dẫn chi tiết của chúng tôi về tham số thủ tục lưu trữ MySQL (liên kết đến bài viết trước)

Ví dụ để trả về nhiều giá trị từ thủ tục được lưu trữ

Để chứng minh các ví dụ, chúng tôi sẽ sử dụng bảng mô tả và dữ liệu sau

Thủ tục có thể trả về một giá trị trong MySQL không?
Bảng đơn hàng Mô tả

Thủ tục có thể trả về một giá trị trong MySQL không?
Dữ liệu bảng đơn đặt hàng

Bây giờ, chúng ta sẽ tạo thủ tục lưu trữ trả về tổng số đơn đặt hàng đã được vận chuyển, đã giao và đã hủy

DELIMITER // CREATE PROCEDURE orders_summary(OUT shipped INT,OUT delivered INT, OUT canceled INT) BEGIN SELECT COUNT(*) INTO shipped FROM orders WHERE status="shipped"; SELECT COUNT(*) INTO delivered FROM orders WHERE status="delivered"; SELECT COUNT(*) INTO canceled FROM orders WHERE status="canceled"; END // DELIMITER ;

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

Trong ví dụ trên, chúng tôi đã khai báo ba tham số OUT để giữ các giá trị của các đơn hàng đã vận chuyển, đã giao và đã hủy

Trong phần thân thủ tục, chúng ta đã viết ba câu lệnh SELECT với hàm COUNT để đếm số lượng đơn đặt hàng với điều kiện trạng thái của chúng bằng cách sử dụng mệnh đề WHERE

Vì vậy, chúng tôi đang trả về nhiều giá trị từ một thủ tục được lưu trữ. Hãy kiểm tra nó ngay bây giờ

CALL orders_summary(@shipped, @delivered, @canceled); SELECT @shipped, @delivered, @canceled;

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

Nếu bạn kiểm tra dữ liệu bảng, có hai đơn hàng đã giao, hai đơn hàng đã hủy và một đơn hàng đã được giao. Chúng ta sẽ nhận được kết quả theo cách này

Thủ tục có thể trả về một giá trị trong MySQL không?
Kết quả ví dụ

Như bạn có thể thấy, chúng tôi đã nhận được kết quả như mong đợi, điều đó có nghĩa là quy trình trả về nhiều giá trị của chúng tôi hoạt động hoàn hảo

Trả về nhiều giá trị từ thủ tục được lưu trữ trong PHP

Ví dụ trên đã được chứng minh bằng MySQL CLI. Bây giờ chúng ta sẽ thực hiện ví dụ tương tự trong PHP

Chúng tôi đã tạo thủ tục được lưu trữ ở trên. Chúng tôi sẽ sử dụng quy trình tương tự trong ví dụ bên dưới bên trong PHP

Trong ví dụ dưới đây, chúng tôi đã sử dụng báo cáo chuẩn bị. MySQLi không cung cấp bất kỳ hỗ trợ gốc nào cho các tham số đầu ra, do đó bạn phải xuất các giá trị được trả về của thủ tục được lưu trữ thành các biến người dùng và sau đó tìm nạp các giá trị bằng cách sử dụng câu lệnh SELECT

<?php $conn = mysqli_connect("localhost", "root", "", "journaldev"); $call = mysqli_prepare($conn, 'CALL orders_summary(@shipped, @delivered, @canceled)'); mysqli_stmt_execute($call); $select = mysqli_query($conn, 'SELECT @shipped, @delivered, @canceled'); $result = mysqli_fetch_assoc($select); echo "Total shipped orders are = ".$result['@shipped'] . '<br>'; echo "Total delivered orders are = ".$result['@delivered'] . '<br>'; echo "Total canceled orders are = ".$result['@canceled'] . '<br>'; ?>

Code language: PHP (php)

Ở đây, chúng tôi đã sử dụng thông tin đăng nhập cơ sở dữ liệu để kết nối với cơ sở dữ liệu. Sau đó, chúng tôi sử dụng câu lệnh đã chuẩn bị để gọi thủ tục được lưu trữ. Sau đó, chúng tôi đã sử dụng câu lệnh SELECT để tìm nạp các giá trị từ các biến người dùng

Hãy lưu mã trong “ret_multiple. php” và chạy nó trong trình duyệt

Chúng tôi nhận được đầu ra sau trong trình duyệt

Thủ tục có thể trả về một giá trị trong MySQL không?
Gọi thủ tục lưu sẵn trong Php

Như bạn có thể thấy, chúng tôi đã nhận được đầu ra mong đợi

Phần kết luận

Trong hướng dẫn này, Chúng tôi đã học cách trả về nhiều giá trị từ một thủ tục được lưu trữ. Cùng với nó, chúng ta đã thấy một ví dụ trong đó chúng ta gọi là thủ tục được lưu trữ, thủ tục này trả về nhiều giá trị trong PHP và được hiển thị trong trình duyệt. Tôi hy vọng hướng dẫn này hữu ích cho bạn. Hẹn gặp lại bạn trong bài hướng dẫn tiếp theo

SQL có thể

Trả về dữ liệu bằng tham số đầu ra. Nếu bạn chỉ định từ khóa đầu ra cho một tham số trong định nghĩa thủ tục, thủ tục có thể trả về giá trị hiện tại của tham số cho chương trình gọi khi thủ tục thoát .

Chúng ta có thể trả về một giá trị trong thủ tục không?

Một thủ tục được lưu trữ không có giá trị trả về nhưng có thể tùy ý nhận các tham số đầu vào, đầu ra hoặc đầu vào-đầu ra. Một thủ tục được lưu trữ có thể trả về đầu ra thông qua bất kỳ tham số đầu ra hoặc đầu vào-đầu ra nào.

Một thủ tục được lưu trữ có thể trả về một tập kết quả không?

Ngoài việc trả về các tham số đầu ra, thủ tục lưu sẵn có thể trả về tập kết quả (nghĩa là bảng kết quả được liên kết với con trỏ được mở . Sau đó, ứng dụng có thể đưa ra các yêu cầu tìm nạp để đọc các hàng của con trỏ tập hợp kết quả.

Một thủ tục được lưu trữ có thể trả về một bảng MySQL không?

Bạn không thể trả về bảng từ hàm MySQL. Hàm có thể trả về chuỗi, số nguyên, char, v.v. Để trả về bảng từ MySQL, hãy sử dụng thủ tục lưu sẵn, không phải hàm .