我们可以定义一个包含Oracle SQL Developer中值范围的变量吗?

时间:2016-03-16 09:39:45

标签: sql oracle range

Here我已经找到了如何在Oracle SQL Developer中定义变量。

但我们能以某种方式定义价值范围吗?

我需要像这样的人:

define my_range = '55 57 59 61 67 122'; 
delete from ITEMS where ITEM_ID in (&&my_range);

3 个答案:

答案 0 :(得分:4)

实际上,如果你在列表中放入逗号,它将起作用,因为你使用的是替换参数(不是绑定变量):

define my_range = '55, 57, 59, 61, 67, 122'; 
delete from ITEMS where ITEM_ID in (&&my_range);

enter image description here

答案 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 || ',%');