我想在 oracle 和某些材料中构建一个查询,我想声明这些材料一次,我想在查询中使用此变量。该变量将是字符串字符串。
这是我的查询,但错了。我怎样才能写出正确的查询:
enter code herev_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.对于简单的解决方案,如果我们可以假设材料的值从逗号到逗号是唯一的,则可以声明类似字符串
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) ...
像这样的东西。