使用单个动态数据插入多行

Insert multiple rows with single dynamic data

我正在尝试将具有不同 @EmpId 的多行的相同数据插入 table。

查询:

CREATE PROCEDURE usp_SaveEmployee
    (@EmpIds varchar(50),  //1,2,3,4
     @StateId int,
     @CountryId int,
     @Comments varchar(50))
AS
BEGIN
    INSERT INTO dbo.tblEmpDetails (EmpId, StateId, CountryId, Comments)
        SELECT * 
        FROM [dbo].[FN_ListToTable] (',',@EmpIds)

    -- How can I add this: (@StateId, @CountryId, @Comments)
END

或者有其他更好的方法来处理这个问题吗?

只需在 select 列表中定义正确的列:

INSERT INTO dbo.tblEmpDetails (EmpId, StateId, CountryId, Comments)
SELECT [<ReturnedColumn>], @StateId, @CountryId, @Comments
from dbo.FN_ListToTable (',', @EmpIds);

还要注意 SQL 服务器有一个 built-in string_split() 函数。