我有一张4列的table。我想删除某个列中某个值与之匹配的某些行,并在一条sql语句中检索其余的所有行。有可能吗?
数据表名
id | first_name | last_name | phone
1 | check_first | check_last | 1234567890
2 | check_first2 | check_last2 | 1234567890
3 | check_first3 | check_last3 | 1234567890
4 | check_first4 | check_last4 | 1234567890
5 | check_first5 | check_last5 | 1234567890
6 | check_first6 | check_last6 | 1234567890
如果将id传递为(2,3,4),则必须删除这些行(2,3,4)并在一个oracle sql语句中检索1,5,6
1条答案
按热度按时间h6my8fg21#
好吧,您可以使用一个语句(在它之前输入更多的内容之后)来实现这一点。不过,你能做到并不意味着你应该做到。我不会的。
不管怎样,这里你去:这个“单语句”是一个函数调用内
select
. 为什么?因为它能够返回结果集。一个程序会是一个更好的选择,但你必须把它OUT
参数的结果,这需要比单个语句多一点类型。现在我们来解释为什么不应该这样做:delete是一个dml,不能在函数中完成。实际上,它可以,但它(功能)必须是一个自治事务。此外,必须首先提交(或回滚)该dml;否则,无法返回结果。
样品表:
功能:
测试:
再一次,重复人们已经说过的话:不要那样做。先删除,然后选择下一步。两种说法。