2010-04-21 40 views
61

Trong bối cảnh cơ sở dữ liệu MySQL, sự khác nhau giữa 3 thuật ngữ sau:sự khác biệt giữa thủ tục và chức năng và thường trình?

  • quy trình được lưu giữ;
  • thường trình được lưu trữ;
  • chức năng được lưu trữ.

P.S. Các hàm dựng sẵn như các hàm thời gian ngày tháng, weekday() được xem là gì?

+2

câu trả lời liên quan: [MySQL được lưu trữ thủ tục vs chức năng] (http://stackoverflow.com/questions/3744209/mysql-stored-procedure-vs-function-which-would-i-use-when/13510102#13510102) , Tôi tìm thấy liên kết trong khi tôi đã cải thiện câu trả lời của tôi, do đó liên kết :) –

Trả lời

68

Google là bạn của bạn. Trận đấu đầu tiên cho "thủ tục chức năng thường xuyên mysql" là thế này: http://dev.mysql.com/doc/refman/5.0/en/stored-routines-syntax.html

Một bản tóm tắt nhanh chóng:

Một thói quen lưu trữ là một trong hai thủ tục hoặc một hàm.

Thủ tục được gọi bằng câu lệnh CALL và chỉ có thể trả lại giá trị bằng cách sử dụng các biến đầu ra.

Một hàm có thể được gọi từ bên trong một câu lệnh giống như bất kỳ hàm nào khác và có thể trả về một giá trị vô hướng.

+13

Trong khi tôi đồng ý với tình cảm RTFM. Câu trả lời này hiện được Google sử dụng để hiển thị kết quả nội tuyến. – Realistic

27

Sự khác nhau giữa chức năng MySQL và thủ tục mysql

MYSQL Chức năng

Nó phải trở về giá trị. IN, OUTINOUT không thể được sử dụng trong hàm.But kiểu dữ liệu trả về phải được khai báo khi tạo hàm. chức năng có thể được gọi từ một câu lệnh SQL. Hàm trả về một giá trị.

MYSQL Thủ tục

Values ​​Return là không bắt buộc nhưng có thể sử dụng tham số OUT để lợi nhuận thủ tục. Có thể sử dụng số IN | OUT | INOUT thông số. Thủ tục không thể được gọi từ Tuyên bố SQL. thủ tục trả về nhiều giá trị bằng cách sử dụng các tham số OUT hoặc INOUT.

29

Ở đây tôi đã cố gắng tóm tắt sự khác biệt giữa chức năng và thủ tục.

  1. FUNCTION luôn trả về giá trị sử dụng câu lệnh trả về. THỦ TỤC có thể trả lại một hoặc nhiều giá trị thông qua các tham số hoặc có thể không trả lại bất kỳ giá trị nào.
  2. Các hàm thường được sử dụng để tính toán khi các thủ tục thường được sử dụng để thực hiện logic nghiệp vụ.
  3. Hàm chỉ trả về 1 giá trị. Thủ tục có thể trả về nhiều giá trị (tối đa 1024).
  4. Thủ tục được lưu trữ luôn trả về giá trị số nguyên bằng 0 theo mặc định. Trong khi các kiểu trả về hàm có thể là các giá trị vô hướng hoặc bảng hoặc bảng.
  5. Các thủ tục được lưu trữ có một kế hoạch thực thi được biên dịch trước, trong đó các chức năng không có.
  6. Một hàm có thể được gọi trực tiếp bằng câu lệnh SQL như chọn func_name từ kép trong khi các thủ tục không thể.
  7. Quy trình được lưu trữ có bảo mật và giảm lưu lượng truy cập mạng và đồng thời chúng tôi có thể gọi thủ tục được lưu trữ trong bất kỳ trường hợp nào. của các ứng dụng tại một thời điểm.
  8. Một chức năng có thể được sử dụng trong truy vấn SQL trong khi thủ tục không thể được sử dụng trong truy vấn SQL. Điều này gây ra sự khác biệt chính giữa chức năng và thủ tục.
+0

Điểm thứ 4 của bạn không chính xác, vui lòng sửa lại ans –

0

Hàm phải trả về giá trị nhưng trong thủ tục được lưu trữ, nó là tùy chọn (Quy trình có thể trả về giá trị 0 hoặc giá trị n). Các hàm chỉ có thể có các tham số đầu vào cho nó trong khi các thủ tục có thể có các tham số đầu vào/đầu ra. Các hàm có thể được gọi từ Thủ tục trong khi các thủ tục không thể được gọi từ Hàm.

Các vấn đề liên quan