Tôi đã cố gắng xem xét sự khác biệt giữa thủ tục và chức năng pl/sql và tìm thấy liên kết http://it.toolbox.com/blogs/oracle-guide/learn-plsql-procedures-and-functions-13030. Trước tiên, hãy để tôi cho bạn biết nhà phát triển thường làm gì với quy trình và chức năng pl/sqlThủ tục PL/Sql vs chức năng?
1) Muốn nhận được giá trị trả về. Anh ta có thể tạo nó với cả hàm và thủ tục. Với hàm nếu anh ta muốn trả về một giá trị duy nhất anh ta có thể sử dụng câu lệnh return. Nếu anh ta muốn trả lại nhiều giá trị, anh ta có thể đạt được nó với tham số inout. Thật thú vị, anh ta có thể nhận được giá trị trả về với tham số inout từ thủ tục (không có trả về)
Nhưng nó không tạo sự khác biệt cho nhà phát triển miễn là có thể đạt được ý định của nó hoặc với câu lệnh trả về hoặc tham số inout.
vì vậy ở đây cả hai đều có thể thay thế lẫn nhau.
2) Anh ấy có thể sử dụng DML trong cả chức năng và thủ tục. Vì vậy, ở đây anh ta cũng có thể sử dụng một trong hai thứ này để thay đổi trạng thái của databse.
Vì vậy, tôi không nhận được bất kỳ lý do cụ thể nào để sử dụng khi cả hai có thể thay thế lẫn nhau trong một số.
Lý do hợp lý duy nhất tôi tìm thấy lên đến một mức độ nào là chức năng có thể được gọi từ SQL, thủ tục có thể không
ai đó có thể giải thích cái nào để sử dụng khi nào và tại sao?
Xem thêm [Chức năng vs Quy trình được lưu trữ] (https://forums.oracle.com/forums/thread.jspa?messageID=547397) trên Oracle.com – Vache
@Mohit - Tôi tin rằng một câu hỏi tương tự đã được hỏi trước đây . Có thể Dup http://stackoverflow.com/questions/1179758/function-vs-stored-procedure-in-sql-server –
@Vache tôi tìm thấy câu lệnh này Có thêm một sự khác biệt giữa thủ tục được lưu trữ và các hàm chỉ lưu các thủ tục được biên dịch một lần và có thể được gọi một lần nữa và một lần nữa mà không được biên dịch mỗi lần, điều này cải thiện hiệu suất và tiết kiệm thời gian, các chức năng khác biên dịch mỗi khi chúng được gọi tại https://forums.oracle.com/forums/thread.jspa?messageID = 547397 không chắc nó có thực sự đúng không? –