Trong bài viết này, chúng ta sẽ thảo luận về chèn thủ tục lưu trữ SQL Server với một vài ví dụ
Thủ tục được lưu trữ trở nên tiện dụng khi bạn có mã SQL cần lặp lại nhiều lần. Một thủ tục được lưu trữ là một bộ mã SQL được viết riêng để thực hiện một tác vụ. Chúng ta có thể viết một thủ tục lưu trữ và thực hiện nó với một dòng mã SQL
Một trong những nhiệm vụ mà bạn có thể thực hiện với thủ tục lưu sẵn là chèn hàng vào bảng. Bạn không cần phải viết mỗi lần cú pháp đầy đủ của câu lệnh chèn. Thay vào đó, bạn có thể tạo một thủ tục lưu trữ một lần và thực hiện nó bằng một dòng duy nhất
Bạn sẽ thấy một số ví dụ về thủ tục lưu trữ chèn trong bài viết này. Những ví dụ này được đề cập trong danh sách dưới đây
- Chèn thủ tục lưu trữ SQL Server vào bảng
- Chèn thủ tục lưu trữ SQL Server vào bảng tạm thời
- Chèn thủ tục lưu trữ SQL Server vào id trả về bảng
- Chèn thủ tục lưu trữ SQL Server vào select
- SQL Server lưu trữ thủ tục chèn vào nhiều bảng
- Chèn thủ tục lưu trữ SQL Server vào biến
- Máy chủ SQL chèn kết quả thủ tục được lưu trữ vào bảng
- Máy chủ SQL chèn kết quả thủ tục được lưu trữ vào biến bảng
Mục lục
Chèn thủ tục lưu trữ SQL Server vào bảng
Trong phần này, bạn sẽ tìm hiểu cách tạo một thủ tục được lưu trữ sẽ chèn một hàng vào bảng trong SQL Server 2019. Bạn sẽ thấy các ví dụ mà chúng tôi đã tạo cho mục đích trình diễn
- Hãy để chúng tôi tạo một bảng. Tôi sẽ tạo một bảng nơi chúng tôi sẽ lưu trữ tên tiểu bang cùng với dân số của họ, của Hợp chủng quốc Hoa Kỳ
USE BackupDatabase
GO
CREATE TABLE dbo.States_in_USA[
[Sr. No] int IDENTITY[1,1],
[State] nvarchar[30],
[Population] int
]
- Bây giờ chúng ta sẽ tạo thủ tục lưu sẵn để chèn dữ liệu vào bảng
USE BackupDatabase
GO
CREATE PROCEDURE dbo.InsertInto @state nvarchar[30], @population int
AS
BEGIN
INSERT INTO dbo.States_in_USA[
State, Population]
VALUES[@state, @population]
END
- Chúng tôi đã xác định hai tham số trong thủ tục được lưu trữ
- @tiểu bang. Tên một bang ở Mỹ
- @dân số. Dân số của nhà nước được cung cấp
- Quy trình được lưu trữ sẽ lấy các giá trị này làm đầu vào và sử dụng các giá trị này bên trong câu lệnh chèn để chèn bản ghi vào dbo. bảng States_in_USA
- Bây giờ chúng tôi sẽ thực hiện thủ tục được lưu trữ này với một số giá trị
USE BackupDatabase
GO
EXEC dbo.InsertInto 'California' , 39613493
SELECT * FROM dbo.States_in_USA
Bạn có thể thấy ở đầu ra rằng các giá trị mà chúng tôi đã cung cấp cho thủ tục được lưu trữ đã được chèn vào bảng. Bằng cách này, bạn có thể tạo một thủ tục lưu trữ sẽ chèn một số dữ liệu vào bảng
Bây giờ chúng ta hãy xem thêm một ví dụ nữa
- Chúng tôi có một bảng có tên là Bộ phận lưu trữ các chi tiết bộ phận của một công ty
- Chúng ta sẽ tạo thủ tục lưu trữ để chèn một bản ghi vào bảng Phòng ban
USE master
GO
CREATE PROCEDURE dbo.InsertDepartment @ID int, @Name nchar[20]
AS
BEGIN
INSERT INTO dbo.Department[
DepID, DepName]
VALUES[@ID, @Name]
END
- Thủ tục được lưu trữ ở trên sẽ nhận hai tham số đầu vào
- @TÔI. ID bộ phận
- @Tên. Tên bộ phận tương ứng với ID bộ phận
- Quy trình được lưu trữ sẽ lấy các giá trị này làm đầu vào và sử dụng các giá trị này bên trong câu lệnh chèn để chèn bản ghi vào bảng Khoa
- Bây giờ chúng ta hãy thực hiện thủ tục lưu sẵn này và xem liệu nó có chèn các giá trị dưới dạng bản ghi không
USE master
GO
EXEC dbo.InsertDepartment 16, 'R&D'
SELECT * FROM dbo.Department
- Hàng được chèn thành công
Do đó, bạn có thể đã học cách chèn một hàng vào bảng bằng cách sử dụng thủ tục lưu sẵn
Đọc trình kích hoạt Máy chủ SQL sau khi chèn với các ví dụ
Chèn thủ tục lưu trữ SQL Server vào bảng tạm thời
Trong phần này, bạn sẽ tìm hiểu cách có thể chèn một hàng vào bảng tạm thời của máy chủ SQL bằng thủ tục được lưu trữ. Chúng ta sẽ thảo luận điều này với một ví dụ
- Đầu tiên, chúng ta hãy tạo một bảng tạm thời trong máy chủ sql
USE tempdb
GO
DROP TABLE IF EXISTS dbo.#tempTable
CREATE TABLE dbo.#tempTable[
[Student ID] int,
[Student Name] nchar[20]
]
- Bây giờ hãy tạo một thủ tục được lưu trữ sẽ chèn một bản ghi vào bảng tạm thời
- Thủ tục có hai tham số đầu vào
CREATE PROCEDURE InsertTemp @ID int, @Name nchar[20]
AS
BEGIN
INSERT INTO dbo.#tempTable[[Student ID], [Student Name]]
VALUES[@ID, @Name]
END
- Hãy để chúng tôi thực hiện thủ tục được lưu trữ với một số giá trị đầu vào
EXEC [tempdb].[dbo].[InsertTemp] 1231, 'Bruno'
SELECT * FROM [tempdb].[dbo].[#tempTable]
- Bạn có thể thấy trong đầu ra rằng hàng được chèn
Lưu ý quan trọng. Thực thi thủ tục được lưu trữ trong cùng một cửa sổ truy vấn mà bạn đã tạo bảng tạm thời nếu bạn đang sử dụng SQL Server Management Studio. Thực thi thủ tục lưu trữ trong một cửa sổ khác sẽ gây ra lỗi và hàng sẽ không được chèn vào bảng
Chèn thủ tục lưu trữ SQL Server vào id trả về bảng
Bạn có thể trả về giá trị nhận dạng được chèn cuối cùng từ một bảng bằng cách sử dụng hàm SCOPE_IDENTITY[]. Khi bạn chèn một hàng vào bảng, bạn có thể sử dụng hàm SCOPE_IDENTITY để tìm nạp giá trị cột nhận dạng được chèn cuối cùng
Trong phần này, chúng tôi sẽ tạo một ví dụ, trong đó chúng tôi sẽ tạo một thủ tục được lưu trữ sẽ chèn một bản ghi vào một bảng có cột nhận dạng. Sau khi chèn bản ghi, nó cũng sẽ trả về cột nhận dạng được chèn cuối cùng thông qua tham số đầu ra
- Xem xét bảng TableIdentity
- Hãy để chúng tôi tạo một thủ tục được lưu trữ sẽ chèn một hàng vào bảng và trả về giá trị cột nhận dạng được chèn cuối cùng
- Bây giờ chúng tôi sẽ thực hiện thủ tục được lưu trữ này
USE master
GO
DECLARE
@IDValue int
EXEC dbo.ReturnID 'Jimmy', 'Finance', @IDvalue OUTPUT
PRINT[@IDvalue]
- Quy trình được lưu trữ trả về 20 là giá trị nhận dạng được chèn cuối cùng
- Hãy để chúng tôi xác minh nếu cùng một giá trị đã được chèn vào bảng
- Như bạn có thể thấy ở đầu ra, thủ tục được lưu trữ đã trả về giá trị cột nhận dạng được chèn cuối cùng
Do đó, bạn có thể đã biết cách sử dụng hàm SCOPE_IDENTITY để trả về giá trị cột nhận dạng được chèn lần cuối
Đọc quy ước đặt tên thủ tục lưu trữ SQL Server và các phương pháp hay nhất
Chèn thủ tục lưu trữ SQL Server vào select
Trong phần này, bạn sẽ học cách sử dụng câu lệnh INSERT INTO SELECT trong thủ tục lưu trữ. Bạn có thể sử dụng câu lệnh này để sao chép dữ liệu từ bảng này sang bảng khác
Chúng tôi sẽ tạo một ví dụ về thủ tục được lưu trữ sẽ sao chép dữ liệu từ bảng này sang bảng khác bằng cách sử dụng câu lệnh INSERT INTO SELECT
- Xem xét bảng SalesTable sau. Chúng ta sẽ tạo một bảng mới có tên là NewSales với cấu trúc tương tự và sao chép dữ liệu từ SalesTable
- Đầu tiên chúng ta sẽ tạo bảng NewSales
USE BackupDatabase
GO
CREATE PROCEDURE dbo.InsertInto @state nvarchar[30], @population int
AS
BEGIN
INSERT INTO dbo.States_in_USA[
State, Population]
VALUES[@state, @population]
END
0- Khi chúng tôi đã tạo bảng, chúng tôi có thể tạo thủ tục được lưu trữ sẽ sao chép dữ liệu từ bảng SalesTable sang bảng NewSales
USE BackupDatabase
GO
CREATE PROCEDURE dbo.InsertInto @state nvarchar[30], @population int
AS
BEGIN
INSERT INTO dbo.States_in_USA[
State, Population]
VALUES[@state, @population]
END
1- Bây giờ chúng ta hãy thực hiện thủ tục lưu trữ và kiểm tra xem dữ liệu có được sao chép hay không
USE BackupDatabase
GO
CREATE PROCEDURE dbo.InsertInto @state nvarchar[30], @population int
AS
BEGIN
INSERT INTO dbo.States_in_USA[
State, Population]
VALUES[@state, @population]
END
2Như vậy, với ví dụ này, bạn có thể đã học cách sử dụng câu lệnh INSERT INTO SELECT để sao chép dữ liệu từ bảng này sang bảng khác bằng thủ tục lưu sẵn
SQL Server lưu trữ thủ tục chèn vào nhiều bảng
Trong phần này, bạn sẽ tìm hiểu cách tạo thủ tục lưu sẵn để chèn bản ghi vào nhiều bảng trong SQL Server 2019
- Hãy xem xét hai bảng trong máy chủ sql
- người. Lưu trữ thông tin cá nhân của mọi người
- Những cái điện thoại. Chỉ lưu trữ số điện thoại và tên của những người trong bảng Người
- Chúng tôi sẽ tạo một thủ tục được lưu trữ sẽ chèn các bản ghi vào cả hai bảng trong một lần thực hiện
USE BackupDatabase
GO
CREATE PROCEDURE dbo.InsertInto @state nvarchar[30], @population int
AS
BEGIN
INSERT INTO dbo.States_in_USA[
State, Population]
VALUES[@state, @population]
END
3- Chúng tôi sẽ chuyển các giá trị mà chúng tôi muốn chèn vào các bảng làm tham số đầu vào cho thủ tục được lưu trữ
- Khi thủ tục lưu sẵn được tạo, chúng ta có thể thực thi nó bằng câu lệnh EXEC
USE BackupDatabase
GO
CREATE PROCEDURE dbo.InsertInto @state nvarchar[30], @population int
AS
BEGIN
INSERT INTO dbo.States_in_USA[
State, Population]
VALUES[@state, @population]
END
4- Kết quả là các bản ghi được chèn vào cả hai bảng
Do đó, bạn có thể đã học cách chèn các bản ghi vào nhiều bảng bằng thủ tục được lưu trữ
Đọc thủ tục lưu trữ SQL Server nếu khác
Chèn thủ tục lưu trữ SQL Server vào biến
Trong phần này, bạn sẽ tìm hiểu cách chèn giá trị đầu ra của một thủ tục được lưu trữ vào một biến trong SQL server 2019
- Đầu tiên khai báo biến
- Sau đó sử dụng biến này làm tham số đầu ra trong thủ tục được lưu trữ
- Hãy để chúng tôi hiểu điều này với một ví dụ
- Xem xét bảng Nhân viên sau
- Chúng tôi sẽ tạo một thủ tục được lưu trữ với một tham số đầu ra. Chúng ta sẽ sử dụng tham số đầu ra để lưu trữ giá trị vào một biến
USE BackupDatabase
GO
CREATE PROCEDURE dbo.InsertInto @state nvarchar[30], @population int
AS
BEGIN
INSERT INTO dbo.States_in_USA[
State, Population]
VALUES[@state, @population]
END
5- Thủ tục được tạo ở trên sẽ lấy ID nhân viên làm tham số đầu vào và nó sẽ trả về Tên nhân viên làm tham số đầu ra từ bảng Nhân viên
- Bây giờ chúng ta sẽ khai báo biến mà chúng ta muốn lưu trữ giá trị và thực hiện thủ tục lưu trữ
USE BackupDatabase
GO
CREATE PROCEDURE dbo.InsertInto @state nvarchar[30], @population int
AS
BEGIN
INSERT INTO dbo.States_in_USA[
State, Population]
VALUES[@state, @population]
END
6- Bạn có thể thấy rằng giá trị được chèn vào biến và được in trên màn hình đầu ra
Vì vậy, bạn có thể đã học cách chèn một giá trị được trả về từ một thủ tục được lưu trữ vào một biến
Đọc IDENTITY_INSERT trong SQL Server
Máy chủ SQL chèn kết quả thủ tục được lưu trữ vào bảng
Trong phần này, bạn sẽ tìm hiểu cách chèn kết quả của một thủ tục được lưu trữ vào một bảng trong SQL Server
Có hai loại giá trị bạn muốn lưu trữ trong bảng từ kết quả thủ tục được lưu trữ
- Giá trị bảng
- Giá trị vô hướng
Chèn các giá trị bảng từ kết quả thủ tục được lưu trữ vào một bảng
Trong trường hợp thủ tục lưu sẵn trả về một tập kết quả, bạn có thể chèn tập kết quả đó vào một bảng. Trong phần này, bạn sẽ có một ví dụ nơi chúng tôi sẽ lưu trữ tập kết quả được trả về bởi thủ tục được lưu trữ vào một bảng
- Chúng tôi có một bảng tên Sinh viên
- Chúng tôi sẽ tạo một thủ tục được lưu trữ sẽ truy xuất một số giá trị cột của tất cả các bản ghi từ bảng Sinh viên và lưu trữ nó vào một bảng khác có tên là StudentID
USE BackupDatabase
GO
CREATE PROCEDURE dbo.InsertInto @state nvarchar[30], @population int
AS
BEGIN
INSERT INTO dbo.States_in_USA[
State, Population]
VALUES[@state, @population]
END
7- Ban đầu, bảng StudentID trống. Chúng tôi sẽ chèn các giá trị vào bảng này bằng cách thực hiện thủ tục được lưu trữ
USE BackupDatabase
GO
CREATE PROCEDURE dbo.InsertInto @state nvarchar[30], @population int
AS
BEGIN
INSERT INTO dbo.States_in_USA[
State, Population]
VALUES[@state, @population]
END
8- Các giá trị cột đã chỉ định được lưu trữ trong bảng StudentID
Đây là cách bạn lưu trữ các giá trị bảng từ một thủ tục được lưu trữ vào một bảng
Chèn các giá trị vô hướng từ các kết quả thủ tục được lưu trữ vào một bảng
Nếu một thủ tục được lưu trữ trả về một giá trị vô hướng, bạn có thể chèn giá trị đó vào một bảng. Chúng tôi sẽ hiển thị một bản demo của nhiệm vụ này. Chúng tôi sẽ sử dụng các tham số đầu ra để trả về một giá trị vô hướng từ một thủ tục được lưu trữ
- Chúng tôi đã tạo một bảng có tên dbo. Sumtable có ba cột
- Số đầu tiên
- Số thứ hai
- Tổng các số
- Chúng tôi sẽ cung cấp hai số làm đầu vào cho một thủ tục được lưu trữ và thủ tục được lưu trữ sẽ tính tổng và trả về tổng dưới dạng tham số đầu ra
- Sau đó, hai số và tổng sẽ được lưu vào Sumtable
- Chúng tôi đã tạo thủ tục được lưu trữ như
USE BackupDatabase
GO
CREATE PROCEDURE dbo.InsertInto @state nvarchar[30], @population int
AS
BEGIN
INSERT INTO dbo.States_in_USA[
State, Population]
VALUES[@state, @population]
END
9- Bây giờ chúng ta sẽ tạo các biến để truyền dưới dạng tham số cho thủ tục lưu sẵn
- Sau đó, chúng tôi sẽ chèn các giá trị vào Sumtable
USE BackupDatabase
GO
EXEC dbo.InsertInto 'California' , 39613493
SELECT * FROM dbo.States_in_USA
0- Giá trị đầu ra được trả về từ thủ tục đã lưu trữ được lưu trữ trong @Sum và sau đó được chuyển đến câu lệnh Chèn
Bằng cách này, bạn có thể lưu trữ kết quả giá trị vô hướng của một thủ tục được lưu trữ vào một bảng
Đọc PostgreSQL THÊM CỘT + 17 Ví dụ
Máy chủ SQL chèn kết quả thủ tục được lưu trữ vào biến bảng
Trong phần này, bạn sẽ tìm hiểu cách lưu trữ kết quả của một thủ tục được lưu trữ trong một biến bảng trong SQL Server. Chúng tôi sẽ tạo một ví dụ để hiểu khái niệm này
- Xem xét bảng Sản phẩm sau
- Đầu tiên, chúng tôi sẽ tạo một thủ tục được lưu trữ sẽ truy xuất các bản ghi từ bảng Sản phẩm
- Quy trình được lưu trữ sẽ lấy ID Sản phẩm làm tham số đầu vào và truy xuất bản ghi tương ứng với ID Sản phẩm
USE BackupDatabase
GO
EXEC dbo.InsertInto 'California' , 39613493
SELECT * FROM dbo.States_in_USA
1- Bây giờ chúng ta sẽ tạo một biến bảng có tên @TableVar mà chúng ta muốn lưu kết quả vào đó
- Sau đó, chúng tôi sẽ thực hiện thủ tục được lưu trữ với ID sản phẩm
USE BackupDatabase
GO
EXEC dbo.InsertInto 'California' , 39613493
SELECT * FROM dbo.States_in_USA
2- Các giá trị được lưu trữ trong biến bảng
Vì vậy, bạn có thể đã học cách chèn kết quả của một thủ tục được lưu trữ vào một biến bảng
Bạn có thể thích các bài viết cơ sở dữ liệu sau đây
- Các hàm PostgreSQL DATE với các ví dụ
- msg 3609 giao dịch đã kết thúc trong trình kích hoạt
- PostgreSQL THÊM CỘT + 17 Ví dụ
- Cách xem thủ tục được lưu trữ trong SQL Server
- SQL Server di chuyển tệp cơ sở dữ liệu
- Thông số Msg 11555 NOT NULL chỉ được hỗ trợ với các mô-đun được biên dịch nguyên bản, ngoại trừ các hàm có giá trị bảng nội tuyến
Trong hướng dẫn này, chúng ta đã tìm hiểu về chèn thủ tục lưu trữ SQL Server vào bảng với một vài ví dụ.
- Chèn thủ tục lưu trữ SQL Server vào bảng
- Chèn thủ tục lưu trữ SQL Server vào bảng tạm thời
- Chèn thủ tục lưu trữ SQL Server vào id trả về bảng
- Chèn thủ tục lưu trữ SQL Server vào select
- SQL Server lưu trữ thủ tục chèn vào nhiều bảng
- Chèn thủ tục lưu trữ SQL Server vào biến
- Máy chủ SQL chèn kết quả thủ tục được lưu trữ vào bảng
- Máy chủ SQL chèn kết quả thủ tục được lưu trữ vào biến bảng
Bijay
Tôi là Bijay có hơn 15 năm kinh nghiệm trong ngành công nghiệp phần mềm. Trong thời gian này, tôi đã làm việc trên MariaDB và sử dụng nó trong rất nhiều dự án. Hầu hết độc giả của chúng tôi đến từ Hoa Kỳ, Canada, Vương quốc Anh, Úc, New Zealand, v.v.
Bạn muốn tìm hiểu MariaDB? . Ngoài ra, tôi là MVP của Microsoft