Những điều nên biết về STORED PROCEDURE (SP)

Phụ lục
nhung-dieu-nen-biet-ve-stored-procedure-sp

Hôm nay chúng ta cùng tìm hiểu về STORED PROCEDURE với mình trong phần kiến thức hôm nay. Hay còn gọi tắt là SP.

STORED PROCEDURE (SP) trong SQL là gì?

Stored Procedure là 1 phần không thể thiếu của SQL Server. Chúng có thể hỗ trợ rất nhiều cho lập trình và cấu hình cơ sở dữ liệu.

Một Stored Procedure là bao gồm các câu lệnh Transact-SQL và được lưu lại trong cơ sở dữ liệu. Các lập trình viên chỉ cần gọi ra và thực thi thông qua SQL Server Management Studio hoặc ngay trong ứng dụng đang phát triển.

Transact-SQL dựa trên SQL, nó là một ngôn ngữ lập trình được sử dụng làm trung gian giữa cơ sở dữ liệu và các ứng dụng. Nó tương đối dễ học vì thực chất nó được tạo bởi hầu hết là các lệnh SQL.

Mục đích sử dụng SP

  • Nó là tập hợp các khối lệnh, dùng để tái sử dụng. Bạn cứ hình dung nó như hàm ở các ngôn ngữ lập trình vậy (function/method).
  • Có thể truyền tham số khi gọi nó.

Hướng dẫn cách sử dụng SP trong SQL

Tạo SP

Cú pháp

CREATE PROCEDURE procedure_name ([parameter[,...]])

BEGIN

sql_statement

END;

Cách gọi để thực thi:

CALL procedure_name;

Ví dụ

Tạo ra một SP để đăng ký thông tin khám bệnh dựa trên 3 thông tin được đưa vào: mã bác sĩ (p_doctor_id), mã bệnh nhân (p_patient_id), phí khám bệnh (p_fee)

Với phần lệnh sẽ thực hiện đăng ký dữ liệu vào các table lần lượt là: medical_record (sổ khám bệnh), doctor_treatment (bác sĩ khám bệnh).

Sử dụng hàm LAST_INSERT_ID() để lấy mã sổ (record_id) vừa thêm vào table medical_record.

Cuối cùng, thực hiện hiển thị ra toàn bộ thông tin.

delimiter //

CREATE PROCEDURE sp_register_treatment (p_doctor_id INT

                                        , p_patient_id INT

                                        , p_fee DOUBLE)

BEGIN

INSERT INTO medical_record (date_of_examination, fee, patient_id)

VALUES (CURDATE(), p_fee, p_patient_id);

    INSERT INTO doctor_treatment (doctor_id, record_id)

 VALUES (p_doctor_id, LAST_INSERT_ID());

    SELECT d.doctor_id, d.last_name, mr.fee, p.patient_id, p.`name`

    FROM doctor d

INNER JOIN doctor_treatment dt ON d.doctor_id = dt.doctor_id

       INNER JOIN medical_record mr ON dt.record_id = mr.record_id

        INNER JOIN patient p ON mr.patient_id = p.patient_id

WHERE mr.record_id = LAST_INSERT_ID();

END //

delimiter ;

Thực hiện gọi SP thực thi bởi từ khoá CALL:

CALL sp_register_treatment(9, 3, 70000);

Hướng dẫn cách sử dụng SP trong SQL

Xoá SP

Cú pháp

DROP PROCEDURE procedure_name

Ví dụ

Xoá SP ở đã tạo ở bên trên:

DROP PROCEDURE sp_register_treatment

Tham số và biến ở SP

Ở SP sẽ hỗ trợ 3 dạng tham số: IN, OUT, INOUT. Với ý nghĩa như sau:

  • IN: kiểu tham số chỉ truyền giá trị vào SP.
  • OUT: kiểu tham số chỉ tham gia SP và lấy giá trị khi kết thúc SP.
  • INOUT: kiểu tham kết hợp IN + OUT.

Còn muốn tạo ra biến lưu trữ giá trị khi thao tác với dữ liệu, thì hãy tạo như thế này:

DECLARE total INT DEFAULT 0;

SET total = 10;

Mình đang thực hiện tạo ra biến total có kiểu dữ liệu là số, với giá trị mặc định là 0. Sau đó tiếp tục thực hiện phép gán bởi từ khoá SET, giá trị của total cuối cùng là 10.

Kết luận

Như bạn đã thấy, STORED PROCEDURE khá giống như hàm ở các ngôn ngữ khác, nhưng ở đây nó hỗ trợ đa dạng về kiểu tham số và cú pháp sẽ phức tạp hơn so với các ngôn ngữ thông thường

Xem thêm: https://devwork.vn/blog/nhung-trang-web-tuyen-dung-danh-cho-dan-it


Devwork

Devwork là Nền tảng TUYỂN DỤNG IT CẤP TỐC với mô hình kết nối Nhà tuyển dụng với mạng lưới hơn 30.000 headhunter tuyển dụng ở khắp mọi nơi.Với hơn 1800 doanh nghiệp IT tin dùng Devwork để :

  • Tối ưu chi phí
  • Tiết kiệm thời gian
  • Tăng tốc tuyển dụng tối đa
  • Đăng ký ngay Devwork trong hôm nay để tuyển dụng những tài năng ưu tú nhất.

    Tag Cloud:

    Tác giả: quyenntt

    Link chia sẻ

    Bình luận

    Bài viết liên quan

    Danh sách bài viết liên quan có thể bạn sẽ thích Xem thêm
    vai-tro-cua-cto-la-gi

    CTO là gì? Vai trò, kỹ năng của Giám đốc Công nghệ

    16:32 22/05/2025

    Vai trò của CTO ngày càng trở nên quan trọng đối với sự phát triển của doanh nghiệp côn nghệ. Bài viết từ Devwork sẽ giúp bạn hiểu rõ CTO là gì, trách nhiệm, kỹ năng cần có và lộ trình để trở thành một thủ lĩnh công nghệ thành công trong thời đại số hiện nay....

    Tấn công XSS là gì? Cách nhận biết, phân loại & phòng tránh hiệu quả

    16:06 22/05/2025

    XSS là gì và tại sao nó lại nguy hiểm đến vậy? Devwork mang đến bài viết chuyên sâu giúp bạn hiểu rõ về lỗ hổng tấn công phổ biến này, cách nhận diện và phương pháp phòng tránh hiệu quả để bảo vệ website của bạn.

    tan-cong-xss-la-gi

    Trigger là gì? 6 điều cần biết về cơ chế kích hoạt tự động

    15:24 22/05/2025

    Trigger là gì và tại sao nó lại quan trọng trong việc phát triển phần mềm hiện đại? Cùng Devwork tìm hiểu về cơ chế mạnh mẽ này - công cụ đắc lực giúp duy trì tính toàn vẹn dữ liệu và tự động hóa quy trình trong các hệ thống thông tin.

    trigger-la-gi

    Prop là gì trong ReactJS? Cách sử dụng prop để truyền dữ liệu

    16:11 21/05/2025

    Prop là gì trong ReactJS luôn là câu hỏi cơ bản nhưng quan trọng đối với mọi lập trình viên khi bắt đầu với thư viện này. Việc nắm vững các khái niệm nền tảng như props sẽ giúp bạn phát triển ứng dụng React một cách hiệu quả và chuyên nghiệp. Hãy cùng tìm hiểu chi tiết về cơ chế truyền dữ liệu quan trọng này trong bài viết sau.

    prop-la-gi-trong-reactjs
    authentication-la-gi

    Authentication là gì? 5 phương pháp bảo mật hiệu quả nhất hiện nay

    16:01 21/05/2025

    Authentication là gì và tại sao nó lại đóng vai trò quan trọng trong thế giới số hóa ngày nay? Cùng Devwork tìm hiểu chi tiết về các phương pháp xác thực và cách triển khai hiệu quả để bảo vệ dữ liệu của bạn.

    elasticsearch-la-gi

    Elasticsearch là gì? Khái niệm, ứng dụng và cách sử dụng cơ bản

    15:52 21/05/2025

    Elasticsearch là gì? Một công nghệ đang thay đổi cách doanh nghiệp quản lý và khai thác dữ liệu. Bài viết của Devwork sẽ giúp bạn hiểu rõ về công cụ mạnh mẽ này, từ cơ chế hoạt động đến các ứng dụng thực tế và hướng dẫn triển khai. Khám phá ngay để nâng cao hiệu suất hệ thống của bạn!