我对存储过程的所有这些都很新。 我想要完成的是一个查询,然后循环通过所有返回的行.. 我想过这样的呕吐:
ALTER PROCEDURE usp_findDoor
@door int,
AS
DECLARE @foundId int
SELECT @foundId=Id FROM pd_orders WHERE door=@door
对于上面的每个id,我想在另一个表中删除这个
DELETE FROM pd_md_detials WHERE order_id = @foundId
现在我通过ASP代码执行所有这些操作,它看起来像这样
Set db = con.execute("Select id from pd_orders WHERE door=1")
Do UNTIL db.EOF
Con.execute("DELETE FROM pd_md_details WHERE order_id="& db("id"))
db.movenext
LOOP
这在SP中是否可行,或者我是否需要重新考虑?
已编辑的部分
如果我有三个级别的表格,如
pd_order_ecolid -> pd_mounting_details -> pd_inventory
上表的相关列是
ID -> order_data -> pp_id
然后应该可以使用此行删除表pd_inventory
中的所有行DELETE FROM pd_inventory
WHERE pp_id IN
(
SELECT id FROM pd_mounting_details
WHERE order_data IN
(
SELECT id from pd_order_ecolid
WHERE order_head=@order_head AND order_line=@order_line
)
)
我自己也不能尝试这种感觉我不能做到(但我不能停止思考如何解决这个问题)
祝你好运
答案 0 :(得分:0)
我错过了什么吗?您想要删除每条记录WHERE door=@door
?
为什么不改变你的SQL:
DELETE FROM pd_colors WHERE door=@door
- 这会删除元组
答案 1 :(得分:0)
如果您只想删除door=@door
可以的地方;
delete from pd_colors where door=@door
如果你想循环组合删除行的提取,你可以改为;
delete from pd_colors output deleted.* where door=@door