Here我已经找到了如何在Oracle SQL Developer中定义变量。
但我们能以某种方式定义价值范围吗?
我需要像这样的人:
define my_range = '55 57 59 61 67 122';
delete from ITEMS where ITEM_ID in (&&my_range);
答案 0 :(得分:4)
实际上,如果你在列表中放入逗号,它将起作用,因为你使用的是替换参数(不是绑定变量):
define my_range = '55, 57, 59, 61, 67, 122';
delete from ITEMS where ITEM_ID in (&&my_range);
答案 1 :(得分:2)
使用集合:
CREATE TABLE ITEMS ( ITEM_ID ) AS
SELECT LEVEL FROM DUAL CONNECT BY LEVEL <= 150;
DEFINE my_range = '55,57,59,61,67,122';
DELETE FROM items WHERE ITEM_ID MEMBER OF INT_TABLE( &&my_range );
然后你可以这样做:
Table ITEMS created.
old:DELETE FROM items WHERE ITEM_ID MEMBER OF INT_TABLE( &&my_range );
new:DELETE FROM items WHERE ITEM_ID MEMBER OF INT_TABLE( 55,57,59,61,67,122 );
6 rows deleted.
示例强>:
google photos
<强>输出强>:
{{1}}
答案 2 :(得分:0)
您可以使用LIKE并只更改包含变量的方式..这样的事情:
define my_range = ',55,57,59,61,67,122,';
delete from ITEMS
where $$my_range like ('%,' || ITEM_ID || ',%');