通过 sql 服务器中的游标从 table 中删除多条记录
Delete multiple records from table through cursor in sql server
我想通过系统定义的 sp
删除一些测试 IP
从 sys.firewall_rules table 在 sql 服务器中执行 sp_delete_firewall_rule
我正在使用下方光标,但它不起作用
declare @name nvarchar(max)
declare cur CURSOR LOCAL for
select @name from sys.firewall_rules where [name] like '%TestIP%'
open cur
fetch next from cur into @name
while @@FETCH_STATUS = 0 BEGIN
exec sp_delete_firewall_rule @name
fetch next from cur into @name
END
close cur
deallocate cur
它对我有用,您只需更改代码中的一些内容。
- 在 select 列表中包含 table ColumnName [name] 而不是变量 。您没有将任何值传递给变量,因此这给出了 NULL 结果。
- 执行时包含SP参数
exec sp_delete_firewall_rule @name = @name1;
我的防火墙规则中有这些 IP:
使用下面的代码,我将删除名称类似于 TestIP1.
的 IP
DECLARE @name1 nvarchar(128);
DECLARE MyCursor CURSOR FOR
SELECT [name] from sys.firewall_rules where [name] like '%TestIP1%';
OPEN MyCursor;
FETCH FROM MyCursor into @name1
WHILE @@FETCH_STATUS = 0 BEGIN
EXEC sp_delete_firewall_rule @name = @name1 ;
FETCH next from MyCursor into @name1
END
CLOSE MyCursor;
DEALLOCATE MyCursor;
GO
现在结果只显示1个IP,不在上面的删除列表中。
我想通过系统定义的 sp
删除一些测试 IP从 sys.firewall_rules table 在 sql 服务器中执行 sp_delete_firewall_rule
我正在使用下方光标,但它不起作用
declare @name nvarchar(max)
declare cur CURSOR LOCAL for
select @name from sys.firewall_rules where [name] like '%TestIP%'
open cur
fetch next from cur into @name
while @@FETCH_STATUS = 0 BEGIN
exec sp_delete_firewall_rule @name
fetch next from cur into @name
END
close cur
deallocate cur
它对我有用,您只需更改代码中的一些内容。
- 在 select 列表中包含 table ColumnName [name] 而不是变量 。您没有将任何值传递给变量,因此这给出了 NULL 结果。
- 执行时包含SP参数
exec sp_delete_firewall_rule @name = @name1;
我的防火墙规则中有这些 IP:
使用下面的代码,我将删除名称类似于 TestIP1.
的 IPDECLARE @name1 nvarchar(128);
DECLARE MyCursor CURSOR FOR
SELECT [name] from sys.firewall_rules where [name] like '%TestIP1%';
OPEN MyCursor;
FETCH FROM MyCursor into @name1
WHILE @@FETCH_STATUS = 0 BEGIN
EXEC sp_delete_firewall_rule @name = @name1 ;
FETCH next from MyCursor into @name1
END
CLOSE MyCursor;
DEALLOCATE MyCursor;
GO
现在结果只显示1个IP,不在上面的删除列表中。