嗨,我想在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
;
答案 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) ...
类似这样的东西。