Có thể lựa chọn từ các chức năng trong các động cơ khác. Ví dụ, Oracle cho phép bạn viết một hàm trả về một bảng có kiểu người dùng xác định. Bạn có thể xác định các tập hợp kết quả trong hàm, điền chúng bằng cách sử dụng các truy vấn hoặc thậm chí sử dụng kết hợp các lựa chọn và mã. Cuối cùng, tập kết quả có thể được trả về từ hàm và bạn có thể tiếp tục truy vấn tập kết quả đó bằng cách sử dụng:
select * from table(FunctionToBeCalls(parameters));
Điểm bất lợi duy nhất là tập kết quả này không được lập chỉ mục, vì vậy nó có thể chậm nếu hàm được sử dụng trong một truy vấn phức tạp.
Trong MySQL, không điều gì có thể xảy ra như vậy. Không có cách nào để sử dụng tập kết quả từ một thủ tục trực tiếp trong một truy vấn chọn. Bạn có thể trả về các giá trị đơn lẻ từ một hàm và bạn có thể sử dụng OUT
hoặc INOUT
tham số cho bạn thủ tục để trả về các giá trị từ nhưng không thể thực hiện được toàn bộ tập kết quả. Điền vào một bảng tạm thời trong quy trình của bạn là cách gần nhất bạn sẽ nhận được.