我是程序新手,正在尝试创建一个程序来从表中删除条目。
表名称将在查询 1 中。我的
request_id
将在另一个查询中,我需要删除哪些条目。
我现在如何开始准备删除语句的过程
query_1 o/p Query_2 o/p
Table_1 15
Table_2 23
Table_3 33
我的删除语句应该是
delete Table_1
where request_id in (15, 23, 33);
delete Table_2
where request_id in (15, 23, 33);
delete Table_3
where request_id in (15, 23, 33);
我尝试将 query_1 的输出分配给一个变量,并将 query_2 的输出分配给另一个变量。
但是我不知道如何在这里准备删除语句。
使用 Dynamic SQL 和 Cursor ,可以实现这一点。请将临时表替换为实际表,并小心执行删除命令。
声明 @表名 VARCHAR(MAX), @Sql NVARCHAR(最大), @Main_Sql NVARCHAR(MAX);
声明cursor_product CURSOR FOR SELECT 表_名称 来自#temp_TableName 打开游标_产品; 从cursor_product 中获取下一个到@Table_NAme
--Print @@FETCH_STATUS
当@@FETCH_STATUS = 0
开始
打印@@FETCH_STATUS
打印@Table_NAME;
SET @Sql =N'Delete From #' + @Table_NAme + ' where Tbl_1_Req_id in (select Req_id from #temp_Request_Id)'
--打印@Sql
设置@Main_Sql = @Sql
--打印@Main_Sql
执行 sp_executesql @Main_Sql;
FETCH NEXT FROM cursor_product INTO
@Table_NAme;
END;
Print @@FETCH_STATUS
CLOSE cursor_product;
DEALLOCATE cursor_product;
请接受有效的答案。