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



我想在 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) ...

像这样的东西。

最新更新