我有一个表格,上面有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 *
。