声明长字符串以在查询语句ORACLE中使用几次

时间:2019-04-23 09:37:18

标签: sql oracle

嗨,我想在oracle中进行buid查询,并需要一些资料,我想一次声明一下这些资料,并希望在查询中使用此变量。该变量将是一串字符串。

这是我的查询,但有误。如何编写正确的查询:

  v_material varchar2(18000) := '2421032060SST','2421040080SST','2421050080SST';

SELECT MARA.MATERIAL,MARA.NAZWA_MATERIALU,MARA.JM,MARA.MAABC
FROM OLAP_DANE.MV_SAP_MARA MARA
Left outer join
(select something
from a
where material in v_material)c
on c.material in mara.material
WHERE MARA.MATERIAL = v_material
;

1 个答案:

答案 0 :(得分:0)

不仅查询错误,字符串声明也错误。您不能以这种方式声明字符串。 1.对于简单的解决方案,如果我们可以假设材料的值在逗号之间是唯一的,则可以声明

之类的字符串
v_material varchar2(18000) := ',2421032060SST,2421040080SST,2421050080SST,';

以及在查询中使用时

... and instr(','|| MARA.Materials ||',', v_material) > 0

2。还是第二种方式,从我的角度来看,这更正确。 声明字符串的架构级别表类型

create or replace type TStrings as table of varchar2(150);

声明

v_materials TStrings := TStrings('2421032060SST','2421040080SST','2421050080SST');

然后在

之类的查询中使用
...  select column_value from table(v_material) ...

类似这样的东西。