Bài viết này sẽ cung cấp một đánh giá về các thủ tục được lưu trữ trên SQL Server với các ví dụ khác nhau.
Bạn đang xem : Hướng dẫn thủ tục được lưu trữ trên máy chủ sql trên ms
Trong bài viết này, chúng ta sẽ tìm hiểu cách tạo các thủ tục được lưu trữ trong SQL Server với các ví dụ khác nhau.
Thủ tục được lưu trữ trong SQL Server là một loạt các câu lệnh được nhóm thành một đơn vị logic và được lưu trữ trong cơ sở dữ liệu. Thủ tục được lưu trữ chấp nhận các tham số và thực hiện các câu lệnh T-SQL trong thủ tục, trả về tập kết quả nếu có.
Để hiểu sự khác biệt giữa các hàm và thủ tục được lưu trữ trong SQL Server, bạn có thể tham khảo bài viết này, Hàm so với các thủ tục được lưu trữ trong SQL Server và để tìm hiểu về các thủ tục được lưu trữ một phần trong SQL Server, hãy nhấp vào Một phần được lưu trữ thủ tục trong SQL Server .
Lợi ích của việc sử dụng quy trình được lưu trữ
Có thể dễ dàng sửa đổi mã này : Chúng tôi có thể dễ dàng sửa đổi mã bên trong quy trình được lưu trữ mà không cần khởi động lại hoặc triển khai ứng dụng. Ví dụ: Nếu các truy vấn T-SQL được viết trong ứng dụng và nếu chúng ta cần thay đổi logic, chúng ta phải thay đổi mã trong ứng dụng và triển khai lại nó. SQL Server Các thủ tục được lưu trữ loại bỏ những thách thức như vậy bằng cách lưu trữ mã trong cơ sở dữ liệu. vì vậy, khi chúng ta muốn thay đổi logic bên trong thủ tục, chúng ta có thể thực hiện điều đó bằng câu lệnh ALTER PROCEDURE đơn giản.
Lưu lượng mạng giảm: Khi chúng tôi sử dụng thủ tục được lưu trữ thay vì viết truy vấn T-SQL ở cấp ứng dụng, chỉ tên thủ tục được chuyển qua mạng thay vì toàn bộ mã T-SQL.
Có thể tái sử dụng: Các thủ tục đã lưu trữ có thể được thực thi bởi nhiều người dùng hoặc nhiều ứng dụng khách mà không cần viết lại mã.
Bảo mật: Các thủ tục được lưu trữ làm giảm mối đe dọa bằng cách loại bỏ quyền truy cập trực tiếp vào các bảng. chúng ta cũng có thể mã hóa các thủ tục được lưu trữ trong khi tạo chúng để không nhìn thấy mã nguồn bên trong thủ tục được lưu trữ. Sử dụng các công cụ của bên thứ ba như ApexSQL Decrypt để giải mã các thủ tục được lưu trữ được mã hóa.
Hiệu suất: Thủ tục được lưu trữ của SQL Server khi được thực thi lần đầu tiên sẽ tạo một kế hoạch và lưu trữ nó trong vùng đệm để kế hoạch có thể được sử dụng lại khi nó thực thi lần sau.
Tôi đang tạo các bảng mẫu sẽ được sử dụng trong các ví dụ trong bài viết này.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
TẠO
p>
BẢNG
Sản phẩm
(
ProductID < / p>
INT
,
Tên sản phẩm
VARCHAR
(
100
)
)
ĐI
p>
TẠO
BẢNG
Mô tả sản phẩm
(
ProductID
INT
,
ProductDescription
VARCHAR
(
800
)
)
ĐI
CHÈN
VÀO
Sản phẩm
GIÁ TRỊ
(
680
, < / p>
‘Khung đường HL – Màu đen, 58’
)
,
(
706
,
‘Khung đường HL – Màu đỏ, 58’ p >
)
,
(
707
,
‘Sport-100 Helmet, Red’
)
< / p>
ĐI
CHÈN
VÀO
< / p>
ProductDescription
GIÁ TRỊ
(
680
,
‘Bánh xe leo núi thay thế cho người lái cấp thấp.’
)
,
(
706
,
‘Hợp kim cứng cáp có tính năng trung tâm tháo lắp nhanh.’
)
,
(
707 p>
,
‘Vành khí động học để lái êm ái.’
)
ĐI
Tạo một thủ tục lưu trữ đơn giản
Chúng tôi sẽ tạo một thủ tục được lưu trữ đơn giản để nối hai bảng và trả về tập kết quả như trong ví dụ sau.
1
2
3
4
5
6
7
8
9
10
TẠO
p>
THỦ TỤC
GetProductDesc
AS
BẮT ĐẦU
BỘ
NOCOUNT p >
BẬT
CHỌN
< p class = "crayon-h">
P
.
ProductID
,
P
.
ProductName p >
,
PD
.
ProductDescription
TỪ
Sản phẩm
P
INNER
THAM GIA
ProductDescription
PD
BẬT
P
.
ProductID
=
PD
.
ProductID
< p class = "crayon-line" id = "urvanov-cú pháp-highlighter-62b14132f2c7e956920546-9">
< p class = "crayon-k"> HẾT
Chúng ta có thể sử dụng ‘EXEC ProcedureName’ để thực thi các thủ tục được lưu trữ. Khi chúng ta thực hiện thủ tục GetProductDesc, tập kết quả sẽ giống như bên dưới.
Tạo một thủ tục được lưu trữ với các tham số
Hãy để chúng tôi tạo một thủ tục được lưu trữ trong SQL Server chấp nhận các tham số đầu vào và xử lý các bản ghi dựa trên tham số đầu vào.
Sau đây là ví dụ về một thủ tục được lưu trữ chấp nhận tham số.
1
2
3
4
5
6
7
8
9
10
11
12
TẠO
p>
THỦ TỤC
GetProductDesc_withparameters
(
@ < / p>
PID
INT
)
AS
BẮT ĐẦU
BỘ
p>
KHÔNG CÓ KHOẢN
BẬT
CHỌN
P
.
ProductID
,
P
. P >
ProductName
,
PD
.
ProductDescription
FROM
Sản phẩm
P
INNER
THAM GIA
ProductDescription
PD
BẬT
P
.
ProductID
= p >
PD
.
ProductID
WHERE
p>
P
.
ProductID
=
@
PID
HẾT
1
THỰC HIỆN
p>
GetProductDesc_withparameters
706
Trong khi thực hiện thủ tục đã lưu trữ, chúng ta cần truyền tham số đầu vào. Vui lòng tham khảo hình ảnh dưới đây để biết bộ kết quả.
Tạo một thủ tục được lưu trữ với các giá trị tham số mặc định
Sau đây là ví dụ về một thủ tục được lưu trữ với các giá trị tham số mặc định.
1
2
3
4
5
6
7
8
9
10
11
12
TẠO
p>
THỦ TỤC
GetProductDesc_withDefaultparameters
(
@ < / p>
PID
INT
=
706
)
AS
p>
BẮT ĐẦU
ĐẶT
KHÔNG CÓ KHOẢN
BẬT
CHỌN
P
.
ProductID
, < / p>
P
.
Tên sản phẩm
,
PD
.
ProductDescription
TỪ
p >
Sản phẩm
P
< p class = "crayon-k"> INNER
THAM GIA
ProductDescription
PD
< / p>
BẬT
P
.
ProductID
=
PD
.
ProductID
WHERE
P
.
ProductID
= < / p>
@
PID
HẾT p>
Khi chúng ta thực hiện thủ tục trên mà không truyền giá trị tham số, giá trị mặc định 706 sẽ được sử dụng. Nhưng khi thực thi truyền giá trị, giá trị mặc định sẽ bị bỏ qua và giá trị được truyền vào sẽ được coi là một tham số.
Tạo thủ tục được lưu trữ với tham số đầu ra
Dưới đây là ví dụ về một thủ tục được lưu trữ với một tham số đầu ra. Ví dụ sau lấy EmpID là cột nhận dạng tự động khi một nhân viên mới được chèn vào.
1
TẠO
p>
BẢNG
Nhân viên
(
EmpID
int
danh tính
(
< p class = "crayon-cn"> 1
,
1
)
,
EmpName
< / p>
varchar
(
500
)
)
1
2
3
4
5
6
7
8
9
10
11
12
TẠO
p>
THỦ TỤC
ins_NewEmp_with_outputparamaters
(
@
Tên
varchar
(
50
)
,
@
EId
int
đầu ra
)
< / p>
AS
BẮT ĐẦU
BỘ
NOCOUNT
BẬT
CHÈN
VÀO
Nhân viên
(
EmpName
)
GIÁ TRỊ
(
@
Tên
) < / p>
CHỌN
@ p >
EId
=
SCOPE_IDENTITY
(
)
HẾT
p >
Việc thực thi các thủ tục được lưu trữ với các tham số đầu ra là khác nhau một chút. Chúng ta phải khai báo biến để lưu giá trị được trả về bởi tham số đầu ra.
1
2
3
4
5
khai báo
p>
@
EmpID
INT
THỰC HIỆN
ins_NewEmp_with_outputparamaters
‘Andrew’
,
@
EmpID
< p class = "crayon-h">
ĐẦU RA
CHỌN
@
EmpID
Tạo quy trình lưu trữ được mã hóa
Chúng ta có thể ẩn mã nguồn trong thủ tục được lưu trữ bằng cách tạo thủ tục với tùy chọn “ENCRYPTION”.
Sau đây là ví dụ về một thủ tục được lưu trữ được mã hóa.
1
2
3
4
5
6
7
8
TẠO
p>
THỦ TỤC
GetE Employees
VỚI
p>
THAM GIA
NHƯ
BẮT ĐẦU p >
BỘ
KHÔNG CÓ KHOẢN
BẬT p >
CHỌN
EmpID
,
EmpName
từ < / p>
Nhân viên
HẾT
Khi chúng tôi cố gắng xem mã của thủ tục được lưu trữ trên SQL Server bằng sp_helptext, nó sẽ trả về “Văn bản cho đối tượng‘ GetEustingees ’đã được mã hóa.”
Khi bạn cố gắng tập lệnh cho thủ tục được lưu trữ được mã hóa từ studio quản lý SQL Server, nó sẽ xuất hiện một lỗi như bên dưới.
Tạo một thủ tục tạm thời
Giống như bảng tạm thời, chúng ta cũng có thể tạo các thủ tục tạm thời. Có hai loại thủ tục tạm thời, một loại là thủ tục lưu trữ tạm thời cục bộ và một loại khác là thủ tục tạm thời toàn cầu.
Các thủ tục này được tạo trong cơ sở dữ liệu tempdb .
Thủ tục lưu trữ SQL Server tạm thời cục bộ : Các thủ tục này được tạo với tiền tố # làm tiền tố và chỉ có thể được truy cập trong phiên mà nó được tạo. Quy trình này sẽ tự động bị hủy khi kết nối bị đóng.
Sau đây là ví dụ về việc tạo một thủ tục tạm thời cục bộ.
1
2
3
4
5
TẠO
p>
THỦ TỤC
#
Nhiệt độ
p >
AS
BẮT ĐẦU
IN
‘Nhiệt độ cục bộ thủ tục ‘
HẾT
p>
Thủ tục lưu trữ SQL Server tạm thời toàn cầu: Các thủ tục này được tạo với tiền tố ## và cũng có thể được truy cập trên các phiên khác. Quy trình này tự động bị ngắt khi kết nối được sử dụng để tạo quy trình bị đóng.
Dưới đây là ví dụ về việc tạo một thủ tục tạm thời toàn cục.
1
2
3
4
5
TẠO
p>
THỦ TỤC
##
THỦ TỤC
p>
AS
BẮT ĐẦU
IN
‘Toàn cầu thủ tục tạm thời ‘
HẾT
< / p>
Sửa đổi quy trình đã lưu trữ
Sử dụng câu lệnh ALTER PROCEDURE để sửa đổi quy trình được lưu trữ hiện có. Sau đây là ví dụ về việc sửa đổi thủ tục hiện có.
1
2
3
4
5
6
7
8
9
10
ALTER
p>
THỦ TỤC
GetProductDesc
AS
BẮT ĐẦU
BỘ
NOCOUNT p >
BẬT
CHỌN
P
.
ProductID
,
P
.
Tên sản phẩm
,
< p class = "crayon-i"> PD
.
ProductDescription
TỪ
Sản phẩm
P
INNER
THAM GIA
ProductDe script
PD
BẬT
P
.
ProductID
=
PD p>
.
ProductID
HẾT p >
Đổi tên thủ tục đã lưu trữ
Để đổi tên thủ tục được lưu trữ bằng T-SQL, hãy sử dụng thủ tục được lưu trữ hệ thống sp_rename. Sau đây là ví dụ đổi tên thủ tục “GetProductDesc” thành một tên mới “GetProductDesc_new”.
1
sp_rename
p>
‘GetProductDesc’
,
‘GetProductDesc_new’ p >
Kết luận
Trong bài viết này, chúng tôi đã khám phá các thủ tục được lưu trữ trong SQL Server với các ví dụ khác nhau. Trong trường hợp bạn có bất kỳ câu hỏi nào, vui lòng hỏi trong phần bình luận bên dưới.
Xem thêm những thông tin liên quan đến chủ đề msgstr Hướng dẫn thủ tục lưu trữ máy chủ sql
[SQL Server] KTeam Buổi 05: Store procedure, Function, Cursor
- Tác giả: K team
- Ngày đăng: 2016-05-06
- Đánh giá: 4 ⭐ ( 6091 lượt đánh giá )
- Khớp với kết quả tìm kiếm: [SQL Server] KTeam Buổi 05: Store procedure, Function, Cursor
Tập hợp khóa học lập trình cơ bản đến nâng cao.
Tham gia group để cập nhật thêm thông tin cũng như tham gia khóa học online miễn phí.https://goo.gl/8T2krI
Nếu các bạn thấy hay thì hãy đăng ký theo dõi kênh, like, share cho mọi người cùng tham gia nhé.
Muốn ủng hộ mình các bạn có thể nhấn vào quảng cáo hiện lên và load xong để mình được ít tiền duy trì nhé.
Cảm ơn mọi người.Lập trình C:https://goo.gl/LgBLUv
Lập trình C cho người không biết lập trình:
https://goo.gl/HQqwUoHướng dẫn kỹ thuật:
https://goo.gl/9zfka3SQL server:
https://goo.gl/EMqIAxLập trình C++:
https://goo.gl/b3E3f4Lập trình Unity 3D:
https://goo.gl/302RvO
SQL Server: Thủ tục lưu trữ (SP)
- Tác giả: www.v1study.com
- Đánh giá: 3 ⭐ ( 5155 lượt đánh giá )
- Khớp với kết quả tìm kiếm: Thủ tục lưu trữ (Stored Procedure – SP) là một nhóm các lệnh Transact-SQL (T-SQL) đóng vai trò như một khối lệnh đơn dùng để thực hiện một công việc (tác
SQL được lưu trữ thủ tục: tạo và sử dụng
- Tác giả: vi.delachieve.com
- Đánh giá: 5 ⭐ ( 3667 lượt đánh giá )
- Khớp với kết quả tìm kiếm:
Thủ Tục Lưu Trữ SQL Cho SQL Server
- Tác giả: www.codehub.com.vn
- Đánh giá: 3 ⭐ ( 5494 lượt đánh giá )
- Khớp với kết quả tìm kiếm: Thủ Tục Lưu Trữ Là Gì?
======================Một thủ tục được lưu trữ là một mã SQL được chuẩn bị mà bạn có thể lưu, do đó, mã có thể được tái sử dụng nhiều lần.
Vì vậy, nếu bạn có một truy vấn SQL mà…
MS SQL Lỗi: Tạo thủ tục lưu trữ trong SQL server 2000 ?
- Tác giả: diendan.congdongcviet.com
- Đánh giá: 4 ⭐ ( 6979 lượt đánh giá )
- Khớp với kết quả tìm kiếm: Câu 1
Tạo thủ tục lưu trữ để thông qua thủ tục này có thể bổ sung thêm một bản ghi mới cho bảng NHAN VIEN ?Câu 2
Tạo thủ tục tính tổng các số lẻ 1,3,5……2(n-1) ?Câu 3
Tạo thủ tục đưa ra số hóa đơn của nhân viên bất kì
có mã nhân viên là tham số ?
Làm cách nào để thực thi thủ tục lưu trữ máy chủ SQL trong SQL Developer?
- Tác giả: qastack.vn
- Đánh giá: 5 ⭐ ( 7214 lượt đánh giá )
- Khớp với kết quả tìm kiếm: [Tìm thấy giải pháp!] Bạn không cần mệnh đề EXEC. Đơn giản chỉ cần sử dụng proc_name paramValue1, paramValue2 (và…
T-SQL – Thủ tục được lưu trữ
- Tác giả: isolution.pro
- Đánh giá: 3 ⭐ ( 3132 lượt đánh giá )
- Khớp với kết quả tìm kiếm: Máy chủ MS SQL Stored procedure được sử dụng để tiết kiệm thời gian viết lại mã bằng cách lưu trữ mã giống nhau trong cơ sở dữ liệu và cũng nhận được kết quả đầu ra cần thiết bằng cách chuyển các tham số. Cú pháp Sau đây là cú pháp cơ bản của việc tạo thủ tục đã…
Xem thêm các bài viết khác thuộc chuyên mục: Kiến thức lập trình