【发布时间】:2013-11-19 20:17:40
【问题描述】:
我正在使用存储过程将记录插入表中。并且在一个循环中至少执行 12 次以插入多条记录,这是非常低效的。
这里是创建过程
Create PROC [dbo].[SP_INSERT_G_SAMPLING]
@GameID INT,
@ScoreID INT
as
begin
INSERT INTO GAMESCORE (GAMEID, SCOREID) VALUES
(@GameID, @ScoreID)
end
我传递值 ex(1,3) 并循环使用来自网站的更多值。
我想同时传递所有值,例如 (1,3),(4,5),(8,9)
然后更改上述过程以接收和插入多行。
ALTER PROC [dbo].[SP_INSERT_G_SAMPLING]
@totalinsert nvarchar(Max)
INSERT INTO GAMESCORE (GAMEID, SCOREID) VALUES
(@totalinsert)
@totalinsert 类似于从网页推送的 (1,3),(4,5),(8,9)。
非常感谢任何帮助
【问题讨论】:
-
您使用的是哪个版本的 SQL Server?表值参数 (TVP) 是执行此操作的首选方式。
-
您是否考虑过在 SQL Server 中使用 XML 数据类型?
-
旁注:您应该不为您的存储过程使用
sp_前缀。微软有reserved that prefix for its own use (see Naming Stored Procedures),你确实会在未来某个时候冒着名称冲突的风险。 It's also bad for your stored procedure performance。最好只是简单地避免sp_并使用其他东西作为前缀 - 或者根本不使用前缀! -
服务器上的 SQL Server 2005。在本地我有 12 岁。我想选择适合 05 岁及以上的东西。
标签: sql sql-server stored-procedures