Thông báo lỗi trong trường hợp này cho biết phần quan trọng nhất:
Hành vi này phù hợp với những gì được ghi trong sổ tay MySQL về các thủ tục và chức năng được lưu trữ:
Bạn chỉ định giá trị cho @Pn
của mình các biến sử dụng câu lệnh select trả về tập kết quả và điều này không được phép trong một hàm. Bạn phải xóa các câu lệnh này khỏi mã của mình. RETURN river
trả về một kết quả giá trị , nhưng không phải là kết quả set .
Tôi cũng lo lắng rằng bạn sử dụng các biến phiên (các biến được định nghĩa là @variable_name) được chia sẻ trên một kết nối, do đó, có khả năng nhiều lệnh gọi đến cùng một hàm cùng một lúc trong một kết nối có thể ảnh hưởng lẫn nhau.
Một hàm được lưu trữ chỉ được cho là trả về một giá trị duy nhất làm đầu ra của nó với return
bản tường trình. Bất cứ điều gì khác được coi là một tác dụng phụ. Nếu bạn muốn tập lệnh MySQL của mình điền nhiều biến, thì bạn phải sử dụng một thủ tục được lưu trữ, bạn không thể sử dụng một chức năng được lưu trữ.