ORACLE-SQL:定义和使用多字符串变量
我目前正在使用一个数据库,其中一些数字以文本格式存储(仅供参考:外部数据库,不可能更改) 我的代码随着时间的推移而增长,因此我开始在代码顶部使用变量,以避免在运行新分析时多次调整代码 例如:ORACLE-SQL:定义和使用多字符串变量,sql,oracle,variables,Sql,Oracle,Variables,我目前正在使用一个数据库,其中一些数字以文本格式存储(仅供参考:外部数据库,不可能更改) 我的代码随着时间的推移而增长,因此我开始在代码顶部使用变量,以避免在运行新分析时多次调整代码 例如: define var = '1234' select * from products where art_id = '&&var' ; 这段代码为我提供了所有ID为1234的文章-请记住,ID存储为文本(因此为“'”s) 现在,当我想查询多个产品时,我必须做什么 这不起作用: def
define var = '1234'
select * from products
where
art_id = '&&var'
;
这段代码为我提供了所有ID为1234的文章-请记住,ID存储为文本(因此为“'”s)
现在,当我想查询多个产品时,我必须做什么
这不起作用:
define var = '1234','2345'
select * from products
where
art_id in ('&&var')
;
define var = ''1234','2345''
select * from products
where
art_id in (&&var)
;
==>我错过了ID为2345的产品
而且,这不起作用:
define var = '1234','2345'
select * from products
where
art_id in ('&&var')
;
define var = ''1234','2345''
select * from products
where
art_id in (&&var)
;
=>错误:缺少表达式
我显然想创建一个where子句的构造如下:
art_id in ('1234','2345')
谢谢 您需要转义引号:
define var = '''1234'',''2345'''
例如:
SQL> define var = '''a'', ''b'''
SQL> select 1 from dual where 'a' in ( &&var);
old 1: select 1 from dual where 'a' in ( &&var)
new 1: select 1 from dual where 'a' in ( 'a', 'b')
1
----------
1
请注意,这里我使用引号来处理字符串值;如果有数值,可以避免引用:
SQL> define var = '123, 234'
SQL> select 1 from dual where 1 in (&&var);
old 1: select 1 from dual where 1 in (&&var)
new 1: select 1 from dual where 1 in (123, 234)
no rows selected
SQL> select 1 from dual where 123 in (&&var);
old 1: select 1 from dual where 123 in (&&var)
new 1: select 1 from dual where 123 in (123, 234)
1
----------
1