如何在Oracle PL/SQL中传递逗号分隔的字符串,并遍历它来执行查询
本文关键字:字符串 分隔 遍历 查询 执行 PL Oracle SQL | 更新日期: 2023-09-27 18:11:27
我有一个Id(字符串)列表。我想删除这样的记录:
DELETE FROM MyTable WHERE ID=:Id
但是,我不想重复调用DB;相反,我希望将Id集合作为逗号分隔的字符串传递,并在Oracle服务器上一次性执行上述查询!
任何帮助都将是非常感激的。
使用逗号分隔的列表,您可以使用下面的函数来分割您的id:
select regexp_substr(:id,'[^,]+',1,level) element
from mytable
connect by level <= length(regexp_replace(:id,'[^,]+')) + 1
所以最后的查询:
DELETE FROM MyTable WHERE ID in ( select regexp_substr(:id,'[^,]+',1,level) element
from mytable
connect by level <= length(regexp_replace(:id,'[^,]+')) + 1)