m0f*_*0fo 3 sql sql-server stored-procedures sql-update
是否可以或建议运行一个更新查询,一次更新近100k记录?
如果是这样,我该怎么做?我试图将一个数组传递给我的存储过程,但它似乎不起作用,这是我的SP:
CREATE PROCEDURE [dbo].[UpdateAllClients]
@ClientIDs varchar(max)
AS
BEGIN
DECLARE @vSQL varchar(max)
SET @vSQL = 'UPDATE Clients SET LastUpdate=GETDATE() WHERE ID IN (' + @ClientIDs + ')';
EXEC(@vSQL);
END
Run Code Online (Sandbox Code Playgroud)
我不知道什么不工作,但它只是没有更新相关的查询.
任何人?
该UPDATE是读你的@ClientIDs(以逗号分隔值)作为一个整体.为了说明这一点,你就是这样做的.
假设 @ClientIDs = 1,2,3,4,5
你的UPDATE命令就像这样解释它
UPDATE Clients SET LastUpdate=GETDATE() WHERE ID IN ('1,2,3,4,5')';
Run Code Online (Sandbox Code Playgroud)
并不是
UPDATE Clients SET LastUpdate=GETDATE() WHERE ID IN (1,2,3,4,5)';
Run Code Online (Sandbox Code Playgroud)
您的问题的一个建议是在您的UPDATE示例中使用子查询
UPDATE Clients
SET LastUpdate = GETDATE()
WHERE ID IN
(
SELECT ID
FROM tableName
-- where condtion
)
Run Code Online (Sandbox Code Playgroud)
希望这是有道理的.

| 归档时间: |
|
| 查看次数: |
2372 次 |
| 最近记录: |