sql-server - 如何使用 SQL Server 中的存储过程在单个查询中插入多行

标签 sql-server sql-server-2008 t-sql stored-procedures sql-server-2005

CREATE PROCEDURE Usp_insertgender
    (@gendervalues VARCHAR(MAX))
AS
BEGIN
    INSERT INTO sparsha.dbo.Genders ([GenderName])
    VALUES @gendervalues;
END

我尝试了上述过程,但出现错误

Msg 102, Level 15, State 1, Procedure Usp_insertgender, Line 10
Incorrect syntax near '@gendervalues'.

我将 @gendervalues 值传递为 ('1'),('2')

最佳答案

可能最简单的方法是定义 TVP :

CREATE TYPE myTVPType AS TABLE( v VARCHAR(50));  
GO  

CREATE PROCEDURE Usp_insertgender (@gendervalues myTVPType READONLY) 
AS 
BEGIN
  INSERT INTO sparsha.dbo.Genders ([GenderName]) 
  SELECT v
  FROM @gendervalues; 
END;

如何调用:

DECLARE @tvp AS myTVPType;  

INSERT INTO @TVP (v)  
VALUES ('1'),('2');

EXEC Usp_insertgender @TVP;  
GO  

关于sql-server - 如何使用 SQL Server 中的存储过程在单个查询中插入多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47620116/

相关文章:

c# - 对设置 SQL 查询参数感到困惑

sql - 连接具有相同标识符的多个表并根据共享标识符拉入字段

c# - 数据库服务器太忙。打开 DataContext 所需的建议

sql - T-SQL(azure 兼容)从一列中获取值作为一行数据

sql - 从sql中给定的日期时间中提取时间和星期几

sql-server - TSQL 数据透视聚合

sql - 如何限制 SQL Server 接受空字符串

c# - 在没有 Entity Framework 的情况下使用 C# 进行数据库交互

c# - 事务必须在连接可用于执行sql语句之前被释放

sql - 在 SQL Server 2008 中计算对数时出现无效的浮点运算错误