SQL Server中一对多插入的存储过程

时间:2018-11-16 21:27:32

标签: sql-server sql-insert

如何使用存储过程以下述格式将数据插入表中?

要求::每个DeptCode将具有多个EmpName(唯一),这是一个动态值。

例如,一个DeptCode可能有20个EmpName,另一个可能只有5个。我正在寻找类似批量插入的方法。

dbo.EmpList

+----+-----------+------------+
| Id | DeptCode  |  EmpName   |
+----+-----------+------------+
|  1 | 001       | Tony       |
|  2 | 001       | Steve      |
|  3 | 001       | John       |
|  4 | 001       | Adkins     |
|  5 | 002       | Clark      |
|  6 | 002       | Doe        |
|  7 | 002       | Natasha    |
|  8 | 003       | Thanos     |
+----+-----------+------------+

2 个答案:

答案 0 :(得分:0)

简单的SQL语句:

INSERT INTO dbo.EmpList
VALUES ('001', 'Tony'), ('001', 'Steve') 
       .... (And so on for additional data rows)

如果Id是您的主键,则会为每个插入语句的每一行添加它。

答案 1 :(得分:0)

基本上,您需要像这样创建sp。当然,您还需要添加一些控件和验证:

DROP PROCEDURE P_InsertEmp
GO
CREATE PROCEDURE P_InsertEmp
     @Id        INT /*If it is identity ignore it*/
    ,@DeptCode  VARCHAR(10)=''
    ,@EmpName   VARCHAR(100)=''
AS
BEGIN
    INSERT INTO EmpList
    SELECT @Id,@DeptCode,@EmpName
    SELECT 'Employee has been added'
END

GO

EXEC P_InsertEmp
     @Id        ='1'
    ,@DeptCode  ='001'
    ,@EmpName   ='AA'