存储过程新手;创建程序时需要帮助

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

我是程序新手,正在尝试创建一个程序来从表中删除条目。

表名称将在查询 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 的输出分配给另一个变量。

但是我不知道如何在这里准备删除语句。

sql delete-row
1个回答
0
投票

使用 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;

请接受有效的答案。

© www.soinside.com 2019 - 2024. All rights reserved.