我有这个
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
(即使我设置它脱离循环)?