Используйте параметры с табличными значениями (TVP), которые были введены в SQL Server 2008. До SQL Server 2008 не было возможности передать табличную переменную в хранимой процедуре в качестве параметра, после SQL Server теперь мы можем передавать Table- Valued Parameter для отправки нескольких строк данных в хранимую процедуру или функцию без создания временной таблицы или передачи стольких параметров. взгляните на приведенный ниже пример
CREATE TYPE UT_Employee AS TABLE
(
Emp_Id int NOT NULL,
EmployeeName nvarchar(MAX),
EmpSalary varchar(50),
StateId varchar(50),
CityId varchar(50)
)
CREATE PROCEDURE USP_Insert_Employee_Info
(
@Employee_Details [UT_Employee] READONLY
)
AS
BEGIN
INSERT INTO dbo.Employee
(
Emp_Id,
EmployeeName,
EmpSalary,
StateId,
CityId
)
SELECT * FROM @Employee_Details
END
Вставка нескольких значений в хранимую процедуру, как показано ниже
DECLARE @Employee_Details AS UT_Employee
INSERT INTO @Employee_Details
SELECT 1001,'Abcd',10000,101,21 UNION ALL
SELECT 1002,'dggg',20000,121,15 UNION ALL
SELECT 1003,'esse',22222,122,35 UNION ALL
SELECT 1004,'uyyy',44333,121,32 UNION ALL
SELECT 1005,'dghd',13233,656,87
EXEC dbo.USP_Insert_Employee_Info @Employee_Details = @Employee_Details