T-SQL 循环,用于插入具有递增 id 的数据

问题描述 投票:0回答:0

我有这个

T-SQL
过程来在我的数据库中存储查询结果,这个查询可能提取的不仅仅是一个结果,因此我需要创建一个计数器以在正确的 id 值处逐行插入:

DECLARE @abi NVARCHAR(10)
DECLARE @username NVARCHAR(100)
DECLARE @password NVARCHAR(100)
DECLARE @id_unita_produttiva int
DECLARE @row_count int

DECLARE @data CURSOR

SET @data = CURSOR FOR
select b.abi as abi, cb.username as username, cb.password as password, f.id as 
id_unita_produttiva from unita_produttiva_mcc f, credenziali_banche_mcc cb, banche b 
where 
f.banca_id = b.id AND 
b.abi = cb.abi_banca AND
f.banca_id <> f.id

OPEN @data -- should contain 2 rows from the above query
  FETCH NEXT FROM @data into @abi, @username, @password, @id_unita_produttiva 
  WHILE @@FETCH_STATUS = 0
   BEGIN

   SET @row_count = (select max(id) from fea.credenziali_banche_mcc) -- I need this because I must set an incremental ID

   insert into fea.credenziali_banche_mcc (id, abi_banca, username, password, id_unita_produttiva) VALUES 
   (@row_count + 1, @abi, @username, @password, @id_unita_produttiva);
    FETCH NEXT
    FROM @data into @abi, @username, @password, @id_unita_produttiva 
   END

CLOSE @data
DEALLOCATE @data

我没办法,但查询循环,当我手动停止它时(例如 20 秒后),我发现插入了数千行而不是两行..

怎么了?


是否有可能将数据插入我填充游标的表之一

@data
FETCH 永远不会结束,因为增加表的大小,我什至增加了变量
@data
(即使我设置它脱离循环)?

sql sql-server tsql procedure
© www.soinside.com 2019 - 2024. All rights reserved.