SQL Server:当对象是表中的一行时,将对象列表传递给存储过程



我有一个表格,上面有column_a、column_b、column_c。

我想将对象列表传递给存储过程,每个对象表示表中的一行。

意义:

CREATE PROCEDURE [dbo].[InsertMultipleObject] 
(@Objects List<MyEntity>)

MyEntity存储column_a、column_b column_c的值。

您必须使用表值参数。此处的链接: https://learn.microsoft.com/en-us/sql/relational-databases/tables/use-table-valued-parameters-database-engine

在您的情况下,您需要在数据库中创建自定义类型(例如,我将列类型声明为 INT(

CREATE TYPE YourTypeName AS TABLE (
column_a INT
, column_b INT
, column_c INT);

完成后,可以按如下方式创建过程:

CREATE PROCEDURE [dbo].[InsertMultipleObject] (
@Objects YourTypeName READONLY
)
AS
BEGIN
SET NOCOUNT ON;
SELECT *
FROM @Objects;
END;
DECLARE @Objects YourTypeName;
INSERT INTO @Objects (column_a, column_b, column_c)
VALUES (1, 1, 1)
, (2, 2, 2)
, (3, 3, 3);
EXECUTE dbo.InsertMultipleObject @Objects = @Objects;

因此,这将包含多个行/列的单个参数作为参数,并简单地从中SELECT *

最新更新