HomeCÔNG NGHỆHướng dẫn viết store procedure trong sql

Hướng dẫn viết store procedure trong sql

21:14, 19/03/2021

Stored procedure trong SQL Server được thực hiện để đội một hoặc các câu lệnh Transact-Squốc lộ thành các đơn vị súc tích. Stored procedure được lưu trữ dưới dạng những đối tượng người sử dụng được lấy tên vào sever đại lý dữ liệu SQL Server.

Bạn đang xem: Hướng dẫn viết store procedure trong sql

lúc các bạn Hotline một stored procedure lần đầu tiên, Squốc lộ Server sẽ tạo nên một chiến lược triển khai cùng tàng trữ nó trong bộ đệm. Trong các lần triển khai tiếp sau của stored procedure, SQL Server áp dụng lại kế hoạch để stored procedure rất có thể thực thi rất nhanh hao cùng với năng suất đáng tin cậy.

Trong giải đáp này, bạn sẽ tò mò hồ hết thứ các bạn cần phải biết về stored procedure vào SQL Server còn chỉ cho mình biện pháp gây ra những stored procedure linc hoạt để buổi tối ưu hóa truy vấn cửa hàng tài liệu.

Hướng dẫn cơ bản về stored procedure trong Squốc lộ Server

Trong phần này, bạn sẽ mày mò giải pháp quản lý các stored procedure vào SQL Server bao hàm chế tác, thực thi, sửa thay đổi với xóa các stored procedure.

Tạo stored procedure đơn giản dễ dàng trong Squốc lộ Server

Câu lệnh SELECT sau trả về danh sách những sản phẩm tự bảng products vào cửa hàng tài liệu mẫu mã BikeStores:

SELECT product_name, list_priceFROM production.productsORDER BY product_name;Để tạo ra stored procedure bảo phủ tầm nã vấn này, chúng ta áp dụng câu lệnh CREATE PROCEDURE nhỏng sau:

CREATE PROCEDURE uspProductListASBEGIN SELECT product_name, list_price FROM production.products ORDER BY product_name;END;Trong cú pháp này:

uspProductList là tên gọi của stored procedure.Từ khóa AS chia cách tiêu đề và phần thân của stored procedure.Nếu stored procedure bao gồm một câu lệnh, các từ khóa BEGIN cùng END phủ quanh câu lệnh là tùy lựa chọn. Tuy nhiên, kia là một trong những thực hành thực tế tốt tạo nên mã ví dụ hơn.Lưu ý: quanh đó tự khóa CREATE PROCEDURE, bạn có thể thực hiện trường đoản cú khóa CREATE PROC để triển khai mang lại câu lệnh ngắn lại hơn nữa.

Để biên dịch stored procedure này, các bạn xúc tiến nó nhỏng một câu lệnh Squốc lộ bình thường vào Squốc lộ Server Management Studio nhỏng vào hình sau:

*

Nếu số đông thứ những đúng chuẩn, thì bạn sẽ thấy thông báo sau:

Commands completed successfully.Nó tức là stored procedure đã được biên dịch cùng lưu trữ thành công vào đại lý dữ liệu.

Bạn rất có thể tra cứu thấy stored procedure vào Object Explorer, vào Programmability > Stored Procedures nlỗi trong hình sau:

*

thường thì, bạn phải nhấp vào nút Refresh nhằm cập nhật bằng tay thủ công các đối tượng đại lý dữ liệu trong Object Explorer.

Thực thi stored procedure vào Squốc lộ Server

Để thực hiện stored procedure, bạn sử dụng câu lệnh EXECUTE hoặc EXEC theo sau là tên gọi của stored procedure nlỗi sau:

EXECUTE sp_name;Hoặc là

EXEC sp_name;Với sp_name là tên của stored procedure mà lại bạn có nhu cầu thực hiện.

lấy ví dụ, để xúc tiến stored procedure uspProductList, bạn áp dụng câu lệnh sau:

EXEC uspProductList;Stored procedure trả về đầu ra output sau:

*

Sửa thay đổi stored procedure trong Squốc lộ Server

Để sửa thay đổi stored procedure vào SQL Server, bạn sử dụng câu lệnh ALTER PROCEDURE.

Trước hết, stored procedure giúp thấy nội dung của nó bằng phương pháp nhấn vào yêu cầu vào thương hiệu stored procedure và lựa chọn menu Modify:

*

Thứ đọng hai, chuyển đổi câu chữ của stored procedure cơ mà vào ví dụ này là sắp xếp những thành phầm theo giá niêm yết gắng bởi thương hiệu sản phẩm:

ALTER PROCEDURE uspProductList AS BEGIN SELECT product_name, list_price FROM production.products ORDER BY list_price END;Thứ đọng bố, nhấp vào nút Execute, Squốc lộ Server sửa đổi stored procedure và trả về thông tin sau:

Commands completed successfully.Bây tiếng, nếu bạn triển khai lại stored procedure, bạn sẽ thấy những biến đổi đang bao gồm hiệu lực:

EXEC uspProductList;Sau phía trên cho thấy 1 phần hiệu quả đầu ra:

*

Xóa stored procedure trong Squốc lộ Server

Để xóa stored procedure trong SQL Server, bạn sử dụng câu lệnh DROPhường PROCEDURE hoặc DROPhường PROC nlỗi sau:

DROP PROCEDURE sp_name;Hoặc là

DROP.. PROC sp_name;Với sp_name là tên gọi của stored procedure mà lại bạn có nhu cầu xóa.

Ví dụ: để xóa stored procedure uspProductList, bạn thực thi câu lệnh sau:

DROP. PROCEDURE uspProductList;Trong phần này, bạn đang học tập phương pháp thống trị những stored procedure vào Squốc lộ Server bao gồm chế tạo, triển khai, sửa thay đổi cùng xóa những stored procedure.

Stored procedure gồm tmê mệt số vào SQL Server

Trong phần này, Shop chúng tôi vẫn không ngừng mở rộng stored procedure có thể chấp nhận được truyền một hoặc nhiều tyêu thích số mang đến nó. Kết trái của stored procedure sẽ thay đổi dựa trên cực hiếm của các tsay đắm số.

Tạo stored procedure tất cả một tđam mê số trong SQL Server

Truy vấn dưới đây trả về danh sách thành phầm từ bảng products trong cửa hàng tài liệu chủng loại BikeStores:

SELECT product_name, list_priceFROM production.productsORDER BY list_price;Quý khách hàng hoàn toàn có thể tạo ra stored procedure phủ quanh truy hỏi vấn này bằng cách áp dụng câu lệnh CREATE PROCEDURE như sau:

CREATE PROCEDURE uspFindProductsASBEGIN SELECT product_name, list_price FROM production.products ORDER BY list_price;END;Tuy nhiên, lần này bạn có thể thêm 1 tmê mệt số vào stored procedure nhằm tìm kiếm các thành phầm có mức giá niêm yết to hơn giá đầu vào:

ALTER PROCEDURE uspFindProducts(
min_list_price AS DECIMAL)ASBEGIN SELECT product_name, list_price FROM production.products WHERE list_price >=
min_list_price ORDER BY list_price;END;Trong ví dụ này:

Đầu tiên, Cửa Hàng chúng tôi vẫn thêm 1 ttê mê số có tên là
min_list_price. Tđắm say số cần được phủ bọc do cặp dấu ngoặc tròn.

Thực thi stored procedure tất cả một tmê mệt số vào SQL Server

Để thực thi stored procedure uspFindProducts, bạn truyền một đối số mang đến nó nlỗi sau:

EXEC uspFindProducts 100;Sau trên đây cho thấy đầu ra:

*

Stored procedure trả về tất cả các thành phầm có giá niêm yết to hơn hoặc bởi 100.

Nếu chúng ta biến hóa đối số thành 200, các bạn sẽ nhận ra một tập kết quả khác:

EXEC uspFindProducts 200;Sau trên đây cho biết thêm đầu ra:

*

Tạo stored procedure có khá nhiều tmê mệt số trong Squốc lộ Server

Stored procedure rất có thể có một hoặc nhiều tđam mê số. Các tmê mẩn số được phân tách bóc bằng dấu phẩy.

Câu lệnh sau sửa đổi stored procedure uspFindProducts bằng cách thêm 1 tham mê số được mang tên
max_list_price AS DECIMAL)ASBEGIN SELECT product_name, list_price FROM production.products WHERE list_price >=
min_list_price AND list_price Khi stored procedure được sửa đổi thành công, bạn cũng có thể thực thi nó bằng phương pháp truyền nhì đối số vào stored procedure, một mang đến
max_list_price nlỗi sau:

EXEC uspFindProducts 900, 1000;Sau phía trên cho thấy thêm đầu ra:

*

Sử dụng thương hiệu của tmê say số Lúc thực thi stored procedure vào SQL Server

Trong trường vừa lòng những stored procedure có nhiều tmê man số, đã tốt rộng với rõ ràng hơn lúc thực thi cácstored procedure bằng phương pháp sử dụng thương hiệu của những tsay mê số.

lấy ví dụ, câu lệnh sau thực hiện stored procedure uspFindProducts bằng cách thực hiện thương hiệu của những tsi mê số
max_list_price = 1000;Kết quả của stored procedure là hệt nhau mặc dù câu lệnh vẫn cụ thể hơn.

Tmê mệt số giao diện chuỗi ký kết tự đến stored procedure trong SQL Server

Câu lệnh dưới đây thêm tđê mê số
name AS VARCHAR(max))ASBEGIN SELECT product_name, list_price FROM production.products WHERE list_price >=
min_list_price AND list_price Trong mệnh đề WHERE của câu lệnh SELECT, chúng tôi vẫn thêm điều kiện sau:

product_name LIKE "%" +
name + "%"Bằng giải pháp này, stored procedure trả về các thành phầm có giá niêm yết phía trong phạm vi niêm yết về tối tgọi cùng buổi tối đa và thương hiệu thành phầm cũng chứa một quãng văn uống bạn dạng nhưng mà bạn truyền vào.

Lúc stored procedure được đổi khác thành công xuất sắc, chúng ta cũng có thể tiến hành nó như sau:

EXEC uspFindProducts
name = "Trek";Trong câu lệnh này, chúng tôi sẽ sử dụng stored procedure uspFindProducts nhằm tìm thành phầm có mức giá niêm yết nằm trong tầm 900 với 1.000 với thương hiệu của bọn chúng bao gồm chứa trường đoản cú Trek.

Bức Ảnh dưới đây cho thấy thêm đầu ra:

*

Tạo các tđê mê số tùy chọn mang đến stored procedure vào SQL Server

Lúc chúng ta thực thì stored procedure uspFindProducts, các bạn cần truyền cả bố đối số tương xứng cùng với tía tsay đắm số của stored procedure.

Squốc lộ Server có thể chấp nhận được bạn hướng đẫn các cực hiếm khoác định cho các tham mê số để khi bạn triển khai stored procedure, chúng ta có thể bỏ qua mất những tyêu thích số có mức giá trị mặc định.

Xem stored procedure sau đây:

ALTER PROCEDURE uspFindProducts(
name AS VARCHAR(max))ASBEGIN SELECT product_name, list_price FROM production.products WHERE list_price >=
min_list_price AND list_price Trong stored procedure này, Cửa Hàng chúng tôi vẫn gán 0 có tác dụng giá trị khoác định mang lại tmê mẩn số
max_list_price.

Lúc stored procedure được biên dịch, chúng ta có thể xúc tiến nó mà ko yêu cầu truyền các đối số mang lại tmê man số
name = "Trek";Đây là kết quả:

*

Trong ngôi trường hòa hợp này, stored procedure đã sử dụng cực hiếm 0 mang đến tđê mê số
max_list_price được hotline là tmê say số tùy lựa chọn (optional parameters).

Tất nhiên, chúng ta cũng có thể truyền các đối số cho các tyêu thích số tùy lựa chọn. Ví dụ: câu lệnh sau trả về tất cả các thành phầm có mức giá niêm yết lớn hơn hoặc bằng 6.000 và tên cất từ bỏ Trek:

EXEC uspFindProducts
name = "Trek";

*

Sử dụng NULL làm quý hiếm mang định cho tmê mẩn số của stored procedure trong SQL Server

Trong stored procedure uspFindProducts, Cửa Hàng chúng tôi sẽ sử dụng 999.999 làm cho giá niêm yết buổi tối đa mặc định. Điều này sẽ không ổn định vị về sau chúng ta có thể có những sản phẩm có giá niêm yết phệ hơn thế.

Một kỹ thuật điển hình nhằm tách vấn đề đó là thực hiện NULL có tác dụng giá trị mặc định cho các tyêu thích số:

ALTER PROCEDURE uspFindProducts(
name AS VARCHAR(max))ASBEGIN SELECT product_name, list_price FROM production.products WHERE list_price >=
max_list_price IS NULL OR list_price Trong mệnh đề WHERE, Cửa Hàng chúng tôi sẽ đổi khác ĐK để giải pháp xử lý cực hiếm NULL cho tham số
max_list_price IS NULL OR list_price Tips: đó là một biểu thức điều kiện rất lôi cuốn mà lại bạn sẽ phát hiện rất nhiều trong những dự án thực tế lúc đi làm.Câu lệnh tiếp sau đây xúc tiến stored procedure uspFindProducts để tìm kiếm thành phầm có giá niêm yết to hơn hoặc bởi 500 cùng tên có đựng trường đoản cú Haro.

EXEC uspFindProducts
name = "Haro";

*
Trong phần này, các bạn đang học cách tạo thành và xúc tiến stored procedure với 1 hoặc các tmê say số. Quý Khách cũng đã học tập biện pháp tạo những tđắm đuối số tùy lựa chọn và áp dụng NULL có tác dụng quý hiếm khoác định cho các tham mê số.

Biến trong SQL Server

Trong phần này, các bạn sẽ tò mò về vươn lên là vào SQL Server bao hàm khai báo biến hóa, gán giá trị cho đổi mới với gán những ngôi trường cực hiếm của bản ghi mang lại biến.

Biến là gì?

Biến là một trong những đối tượng người tiêu dùng cất một giá trị độc nhất vô nhị của một vẻ bên ngoài dữ liệu ví dụ, ví dụ: integer, decimal, date hoặc chuỗi ký kết trường đoản cú, v.v.

Chúng ta thường xuyên thực hiện biến hóa trong những trường phù hợp sau:

Là một cỗ đếm vòng lặp để đếm mốc giới hạn vòng lặp được triển khai.Để giữ lại một quý hiếm được chất vấn bởi câu lệnh vòng lặp, chẳng hạn như lệnh WHILE.Để tàng trữ quý hiếm được trả về bởi vì một stored procedure hoặc một hàm.

Knhị báo biến

Để knhì báo một vươn lên là, chúng ta sử dụng câu lệnh DECLARE. Ví dụ: câu lệnh sau khai báo một biến hóa mang tên
model_year SMALLINT;Câu lệnh DECLARE chế tác một đổi mới bằng cách gán đến nó một tên cùng phong cách tài liệu. Tên đổi mới yêu cầu ban đầu bởi cam kết trường đoản cú
model_year là SMALLINT.

Xem thêm: Hướng Dẫn Tạo Icloud Trên Máy Tính, Cách Đăng Ký Icloud Trên Web Từ Máy Tính

Theo mang định, lúc một trở nên được knhị báo, giá trị của nó được đặt thành NULL.

Giữa tên biến hóa và các loại dữ liệu, chúng ta có thể sử dụng AStrường đoản cú khóa tùy lựa chọn nhỏng sau:

DECLARE
product_name VARCHAR(MAX);

Gán quý giá đến biến

Để gán cực hiếm cho một biến đổi, các bạn sử dụng câu lệnh SET. Ví dụ: câu lệnh sau gán 2018 mang lại biến đổi
model_year vào mệnh đề WHERE nhằm kiếm tìm những sản phẩm theo năm của model:

SELECT product_name, model_year, list_price FROM production.productsWHERE model_year =
model_yearORDER BY product_name;Bây tiếng, bạn cũng có thể đặt hầu hết trang bị lại cùng nhau với thực thi kăn năn mã sau để có list những thành phầm có năm Model là 2018:

DECLARE
model_year = 2018;SELECT product_name, model_year, list_price FROM production.productsWHERE model_year =
model_yearORDER BY product_name;Lưu ý: để thực thi mã, các bạn bấm chuột nút Execute nhỏng trong hình sau, hoặc thừa nhận phím F5:

*
Tấm hình sau đây cho biết thêm tác dụng đầu ra:

*

Lưu trữ hiệu quả truy vấn vấn vào biến

Các bước dưới đây miêu tả biện pháp lưu trữ kết quả truy vấn vào một biến:

Trước tiên, khai báo một biến có tên
product_count AS VARCHAR(MAX));Kết đúng thật sau:

The number of products is 204Để ẩn con số bản ghi bị ảnh hưởng, các bạn áp dụng câu lệnh sau:

SET NOCOUNT ON;

Select một bạn dạng ghi vào biến

Các bước sau minc họa biện pháp knhị báo hai đổi mới, gán một phiên bản ghi cho việc đó và xuất nội dung của những biến:

Đầu tiên, khai báo những trở thành nhằm lưu trữ tên thành phầm với giá chỉ niêm yết:

DECLARE
list_price = list_priceFROM production.productsWHERE product_id = 100;Thứ đọng ba, xuất câu chữ của các biến:

SELECT
list_price AS list_price;Đây là kết quả:

*

Cộng dồn những quý hiếm vào trong 1 biến

Stored procedure dưới đây có một tyêu thích số với trả về list các thành phầm dưới dạng chuỗi:

CREATE PROC uspGetProductList(
product_list với đẳng cấp varchar và gán giá trị của nó thành trống.Thứ đọng ba, Cửa Hàng chúng tôi vẫn sử dụng câu lệnh PRINT để in ra danh sách tên thành phầm.

Câu lệnh sau đây triển khai stored procedure uspGetProductList:

EXEC uspGetProductList 2018Tấm hình sau đây cho thấy thêm 1 phần công dụng đầu ra:

*

Trong phần này, chúng ta sẽ tìm hiểu về đổi mới trong Squốc lộ Server bao hàm knhị báo biến chuyển, gán quý hiếm cho biến với gán các ngôi trường của phiên bản ghi cho các đổi mới.

Tmê say số OUTPUT của stored procedure trong Squốc lộ Server

Trong phần này, bạn sẽ tò mò giải pháp áp dụng các tmê mẩn số OUTPUT (tmê say số đầu ra) trong Squốc lộ Server nhằm trả tài liệu trở lại chương trình hotline.

Tạo tđê mê số OUTPUT cho stored procedure

Để tạo một tđắm đuối số OUTPUT đến stored procedure, các bạn áp dụng cú pháp sau:

parameter_name data_type OUTPUTMột stored procedure rất có thể có nhiều ttê mê số OUTPUT. Ngoài ra, những tđắm đuối số OUTPUT có thể nghỉ ngơi ngẫu nhiên hình dáng dữ liệu đúng theo lệ nào như: số nguim, tháng ngày với chuỗi.

Ví dụ: stored procedure tiếp sau đây tra cứu tìm những sản phẩm theo năm Mã Sản Phẩm với trả về số số lượng sản phẩm trải qua tđắm đuối số OUTPUT là
product_count INT OUTPUT) ASBEGIN SELECT product_name, list_price FROM production.products WHERE model_year =
product_count INT OUTPUTThứ đọng hai, sau câu lệnh SELECT, chúng ta đang gán số lượng bạn dạng ghi được trả về vì chưng tầm nã vấn (
ROWCOUNT là một trong những thay đổi khối hệ thống trả về con số phiên bản ghi được hiểu vì câu lệnh phía trước.

khi chúng ta thực hiện câu lệnh CREATE PROCEDURE trên, stored procedure uspFindProductByModel sẽ được biên dịch và lưu vào hạng mục cửa hàng tài liệu.

Nếu phần nhiều thứ đa số ổn định, SQL Server đang chỉ dẫn thông tin sau:

Commands completed successfully.

Thực thi stored procedure với những tham mê số OUTPUT

Để triển khai stored procedure với những tđê mê số OUTPUT, các bạn tuân theo các bước sau:

Đầu tiên, khai báo các biến hóa nhằm lưu trữ những quý giá được trả về vì các tmê mẩn số OUTPUT.Thứ đọng nhì, áp dụng các biến hóa này Khi Call triển khai stored procedure.

lấy một ví dụ, câu lệnh sau tiến hành stored procedure uspFindProductByModel:

DECLARE
count AS "Number of products found";Tấm hình dưới đây cho thấy đầu ra:

*

Trong ví dụ này:

Đầu tiên, Cửa Hàng chúng tôi knhì báo biến hóa
count INT;Sau đó, tiến hành stored procedure uspFindProductByModel và truyền những tđắm say số:

EXEC uspFindProductByModel
product_count.

quý khách cũng rất có thể thực thi stored procedure uspFindProductByModel nlắp gọn gàng như sau:

EXEC uspFindProductByModel 2018,
count AS "Number of products found";Trong phần này, chúng ta vẫn học tập bí quyết thực hiện tđê mê số OUTPUT để truyền tài liệu từ bỏ stored procedure quay trở về lịch trình Call.

Câu lệnh BEGIN ... END vào SQL Server

Trong phần này, các bạn sẽ khám phá bí quyết sử dụng câu lệnh BEGIN...END vào Squốc lộ Server nhằm bọc một tập hợp các câu lệnh Transact-Squốc lộ thành một kân hận câu lệnh.

Tổng quan lại về câu lệnh BEGIN...END trong Squốc lộ Server

Câulệnh BEGIN...END vào SQL Server được thực hiện để khái niệm một khối câu lệnh. Một kân hận câu lệnh gồm 1 tập hòa hợp các câu lệnh Squốc lộ thực thi cùng mọi người trong nhà.

Nói phương pháp không giống, giả dụ xem từng câu lệnh là 1 trong câu văn thì câu lệnh BEGIN...END có thể chấp nhận được chúng ta khái niệm một quãng văn.

Sau đây minch họa cú pháp của câu lệnh BEGIN...END:

BEGIN sql_statement ENDTrong cú pháp này, các bạn đặt một tập đúng theo các câu lệnh Squốc lộ giữa những từ khóa BEGIN cùng END, ví dụ:

BEGIN SELECT product_id, product_name FROM production.products WHERE list_price > 100000; IF
ROWCOUNT = 0 PRINT "No sản phẩm with price greater than 100000 found";ENDĐầu ra:

*

Để xem các thông báo được tạo thành vày câu lệnh PRINT, vào Squốc lộ Server Management Studio, bạn cần nhấp vào tab Messages. Theo khoác định, tab Results được nhảy cùng tab Messages bị ẩn.

Trong ví dụ này:

trước hết, công ty chúng tôi tất cả một kăn năn lệnh bắt đầu bằng tự khóa BEGIN cùng hoàn thành bằng từ bỏ khóa END.Lưu ý:
ROWCOUNT là một trong trở nên hệ thống trả về con số phiên bản ghi bị ảnh hưởng bởi vì câu lệnh vùng phía đằng trước.

Câu lệnh BEGIN... END số lượng giới hạn một khối xúc tích của các câu lệnh Squốc lộ. Chúng tôi thường xuyên sử dụng câu lệnh BEGIN...END nghỉ ngơi đầu cùng cuối của một stored procedure cùng function.

Câu lệnh BEGIN...END cũng rất được thực hiện cho những câu lệnh IF ELSE, câu lệnh WHILE, v.v., nhằm bao quanh những câu lệnh.

Câu lệnh BEGIN ... END lồng nhau trong SQL Server

Kân hận câu lệnh BEGIN...END có thể lồng nhau vào Squốc lộ Server. Nó dễ dàng Tức là chúng ta có thể đặt một câu lệnh BEGIN...END trong một câu lệnhBEGIN... END khác .

Hãy lưu ý ví dụ sau:

BEGIN DECLARE
name END ELSE BEGIN PRINT "No sản phẩm found"; END;ENDTrong ví dụ này, Shop chúng tôi đã sử dụng câu lệnh BEGIN...END nhằm bọc toàn thể khối hận câu lệnh. Bên vào khối này, công ty chúng tôi cũng thực hiện BEGIN...END cho những câu lệnh IF...ELSE.

Trong phần này, các bạn vẫn mày mò về câu lệnh BEGIN...END vào Squốc lộ Server để quấn các câu lệnh Transact-Squốc lộ thành những khối lệnh.

CURSOR vào SQL Server

Trong phần này, các bạn sẽ tò mò giải pháp áp dụng CURSOR trong SQL Server để xử lý một tập kết quả, các lần một bản ghi.

SQL Server vận động dựa trên tập đúng theo, ví dụ, câu lệnh SELECT trả về một tập vừa lòng những bản ghi được Điện thoại tư vấn là tập công dụng. Tuy nhiên, đôi lúc, chúng ta có thể ước ao cách xử lý một tập dữ liệu theo từng bạn dạng ghi. Đây là lúc CURSOR được áp dụng.

CURSOR là gì?

CURSOR (con trỏ) là một trong đối tượng người sử dụng chất nhận được thông qua qua các phiên bản ghi của tập kết quả. Nó có thể chấp nhận được các bạn xử lý từng bản ghi bơ vơ được trả về vị một truy tìm vấn.

Vòng đời của CURSOR vào Squốc lộ Server

Đây là quá trình để tạo ra cùng thực hiện một CURSOR:

*

trước hết, knhì báo một CURSOR.

DECLARE cursor_name CURSOR FOR select_statement;Để knhì báo một CURSOR, bạn chỉ định tên của chính nó sau trường đoản cú khóa DECLARE với vẻ bên ngoài tài liệu là CURSOR và hỗ trợ một câu lệnh SELECT có mang tập hiệu quả mang đến CURSOR.

Tiếp theo, msinh sống CURSOR nhằm xúc tiến câu lệnh SELECT:

OPEN cursor_name;Sau kia, thông qua từng bản ghi trong CURSOR và đưa vào một trong những hoặc những biến:

FETCH NEXT FROM cursor INTO variable_list;SQL Server cung ứng biến hóa khối hệ thống
FETCHSTATUS trả về 0, có nghĩa là câu lệnh FETCH sẽ thành công xuất sắc. Quý khách hàng hoàn toàn có thể áp dụng câu lệnh WHILE để chu đáo toàn bộ các bạn dạng ghi trường đoản cú CURSOR nlỗi trong đoạn mã sau:

WHILE
FETCH_STATUS = 0 BEGIN FETCH NEXT FROM cursor_name; END;Sau Khi sẽ chuyên chú qua tất cả bản ghi trong CURSOR, chúng ta sẽ đóng CURSOR bởi lệnh sau:

CLOSE cursor_name;Cuối thuộc, phân bổ CURSOR nhằm giải pđợi nó:

DEALLOCATE cursor_name;

ví dụ như CURSOR trong Squốc lộ Server

Chúng tôi sẽ thực hiện bảng products vào các đại lý dữ liệu chủng loại BikeStores nhằm minch họa mang lại CURSOR vào Squốc lộ Server:

*

trước hết, knhì báo hai đổi thay nhằm tàng trữ tên thành phầm cùng niêm yết cùng một CURSOR nhằm tàng trữ kết quả của truy vấn vấn lấy tên thành phầm với giá niêm yết từ bảng production.products:

DECLARE
list_price DECIMAL;DECLARE cursor_sản phẩm CURSORFOR SELECT product_name, list_price FROM production.products;Tiếp theo, msống CURSOR:

OPEN cursor_product;Sau đó, chú tâm từng phiên bản ghi từ CURSOR cùng in ra tên thành phầm và giá chỉ niêm yết:

FETCH NEXT FROM cursor_product INTO
list_price; END;Sau đó, đóng CURSOR:

CLOSE cursor_product;Cuối cùng, phân bổ CURSOR để giải pđợi nó.

DEALLOCATE cursor_product;Đây là đoạn mã trả chỉnh:

DECLARE
list_price DECIMAL;DECLARE cursor_hàng hóa CURSORFOR SELECT product_name, list_price FROM production.products;OPEN cursor_product;FETCH NEXT FROM cursor_hàng hóa INTO
list_price; END;CLOSE cursor_product;DEALLOCATE cursor_product;Đây là đầu ra một phần:

*

Trong thực tiễn, các bạn sẽ thi thoảng lúc sử dụng CURSOR để giải pháp xử lý tập công dụng vì chưng nó vô cùng chậm rì rì.

Xem thêm: Tổng Hợp Code Thế Giới Đại Chiện, Code Game Đại Chiến Nhẫn Giả

Trong phần này, bạn đang học tập bí quyết sử dụng CURSOR trong Squốc lộ Server nhằm xử trí một tập công dụng, các lần một bản ghi.


Chuyên mục: CÔNG NGHỆ