如何遍历查询生成的临时表用户数据并批量插入至目标表?
批量插入临时表中所有用户的记录到目标表
你可以用INSERT...SELECT的方式直接批量插入,不需要逐行处理,这是SQL中批量操作的最优方式,比游标或循环效率高很多。
完整的实现代码如下:
-- 先创建临时表存储用户ID列表 SELECT DISTINCT [AUTHORIZATION_NAME] INTO #TEMP FROM [saving].[SAV_AUTHORIZATION] WHERE [ACTIVE_FLAG] = 1 AND [SAV_AUTHORIZATION_TYPE_ID] = 4 -- 批量插入临时表中每个用户的记录到目标表 INSERT INTO [saving].[SAV_INITIATIVES_APPROVAL] ( [SAV_INITIATIVES_ID], [APPROVAL_DATE_SUBMITTED], [APPROVAL_BY_NM], [APPROVAL_BY_DT], [LAST_UPDATE_DATE], [LAST_UPDATE_USER], [ACTIVE_FLAG] ) SELECT @ID, GETDATE(), [AUTHORIZATION_NAME], -- 直接取临时表中的用户名 NULL, GETDATE(), @LAST_UPDATE_USER, 1 FROM #TEMP -- 从临时表获取所有用户 -- 用完临时表后可手动删除(SQL Server也会在会话结束时自动清理) DROP TABLE #TEMP
关键说明:
- 把原来的
VALUES子句替换为SELECT,从临时表#TEMP中读取每个用户的AUTHORIZATION_NAME,替代原代码中的@APPROVER_NM - 其他固定值或变量(如
@ID、GETDATE()、@LAST_UPDATE_USER)会自动应用到每一条插入的记录中 - 临时表使用完毕后,可通过
DROP TABLE #TEMP手动清理,避免占用资源
内容的提问来源于stack exchange,提问作者Srav
相关产品推荐
相关产品推荐

