例如:
车辆编号 有效性 bom清单表编号
BMW01 002-007 440017
BMW01 011-066 440018
对应相应的bom物料清单表
bom清单表 bom_plan_440017
pnumber Fname counNumber 车间
A001 零件1 13 23
A002 零件10 63 22
A003 零件22 63 23
A004 零件62 73 23
-------------------------------------
bom清单表 bom_plan_440018
零件编号 零件名称 使用数量 生产车间
pnumber Fname counNumber chejian
A001 零件1 13 23
A002 零件10 33 23
A003 零件22 13 35
A004 零件62 33 45
--------------------------------------
目标结果集合为
零件编号 零件名称 使用数量 生产车间 有效性
A001 零件1 13 23 002-007,011-066
A002 零件10 63 23 002-007
A002 零件10 33 23 011-066
A003 零件22 63 23 002-007
A003 零件22 13 35 011-066
A004 零件62 73 23 002-007
A004 零件62 33 45 011-066
---------------------------------------
现在想通过Oracle存储过程取出当输入车辆编号(BMW01),取出车辆编号为bmw01,所有单辆汽车装机数量
并且当零件编号一致(编号一致,名称自然也一致),有效性,生产车间,单机装配数量一致时合并成一条数据
目标结果集合为 BMW01车
零件编号 零件名称 使用数量 生产车间 有效性
A001 零件1 13 23 002-007,011-066 (合并的)
A002 零件10 63 23 002-007
A002 零件10 33 23 011-066
A003 零件22 63 23 002-007
A003 零件22 13 35 011-066
A004 零件62 73 23 002-007
A004 零件62 33 45 011-066
-----------------------------------------
关系表: 表名:e_effrelation
车辆编号 有效性 bom清单表编号
BMW01 002-007 440017
BMW01 002-027 440015
f01 002-017 440013
f01 001-007 440018
BMW325 009-067 440022
f01 002-057 440054
BYD7 001-017 440066
------------------------------------------------
bom清单表 bom_plan_440018
零件编号 零件名称 使用数量 生产车间
pnumber Fname counNumber chejian
A001 零件1 23 23
A002 零件2 33 14
A003 零件4 13 35
A004 零件6 33 45
------------------------------------------
bom清单表 bom_plan_440019
pnumber Fname counNumber chejian
A001 零件1 13 45
A002 零件2 63 34
A003 零件4 63 23
A004 零件6 73 23
---------------------------------------------------
bom清单表 bom_plan_440017
pnumber Fname counNumber 车间
A001 零件7 13 34
A022 零件10 63 34
A003 零件22 63 2
A004 零件62 73 34
4 个解决方案
#1
-- 大概这样子的,给你写个例子,你自己再补充一下
create or replace procedure spx(ptype varchar2, s out sys_refcursor) as
v_sql varchar2(2000);
v_t_name varchar2(100) := '';
begin
-- 查询出表名称
select tname into v_table_name from table_list where m = p_type;
-- 返回结果的语句
v_sql := 'select * from ' || v_t_name || ' where name ... ';
-- 返回结果
open s for v_sql;
end;
#2
逻辑 不清楚,能帮我写出逻辑么?
#3
这有什么逻辑,你就把你的表名替换就可以了。
#4
现在想通过Oracle存储过程取出当输入车辆编号(BMW01),取出车辆编号为bmw01,所有单辆汽车装机数量
并且当零件编号一致(编号一致,名称自然也一致),有效性,生产车间,单机装配数量一致时合并成一条数据
目标结果集合为 BMW01车
零件编号 零件名称 使用数量 生产车间 有效性
A001 零件1 13 23 002-007,011-066 (合并的)
A002 零件10 63 23 002-007
A002 零件10 33 23 011-066
A003 零件22 63 23 002-007
A003 零件22 13 35 011-066
A004 零件62 73 23 002-007
A004 零件62 33 45 011-066
并且当零件编号一致(编号一致,名称自然也一致),有效性,生产车间,单机装配数量一致时合并成一条数据
目标结果集合为 BMW01车
零件编号 零件名称 使用数量 生产车间 有效性
A001 零件1 13 23 002-007,011-066 (合并的)
A002 零件10 63 23 002-007
A002 零件10 33 23 011-066
A003 零件22 63 23 002-007
A003 零件22 13 35 011-066
A004 零件62 73 23 002-007
A004 零件62 33 45 011-066
#1
-- 大概这样子的,给你写个例子,你自己再补充一下
create or replace procedure spx(ptype varchar2, s out sys_refcursor) as
v_sql varchar2(2000);
v_t_name varchar2(100) := '';
begin
-- 查询出表名称
select tname into v_table_name from table_list where m = p_type;
-- 返回结果的语句
v_sql := 'select * from ' || v_t_name || ' where name ... ';
-- 返回结果
open s for v_sql;
end;
#2
逻辑 不清楚,能帮我写出逻辑么?
#3
这有什么逻辑,你就把你的表名替换就可以了。
#4
现在想通过Oracle存储过程取出当输入车辆编号(BMW01),取出车辆编号为bmw01,所有单辆汽车装机数量
并且当零件编号一致(编号一致,名称自然也一致),有效性,生产车间,单机装配数量一致时合并成一条数据
目标结果集合为 BMW01车
零件编号 零件名称 使用数量 生产车间 有效性
A001 零件1 13 23 002-007,011-066 (合并的)
A002 零件10 63 23 002-007
A002 零件10 33 23 011-066
A003 零件22 63 23 002-007
A003 零件22 13 35 011-066
A004 零件62 73 23 002-007
A004 零件62 33 45 011-066
并且当零件编号一致(编号一致,名称自然也一致),有效性,生产车间,单机装配数量一致时合并成一条数据
目标结果集合为 BMW01车
零件编号 零件名称 使用数量 生产车间 有效性
A001 零件1 13 23 002-007,011-066 (合并的)
A002 零件10 63 23 002-007
A002 零件10 33 23 011-066
A003 零件22 63 23 002-007
A003 零件22 13 35 011-066
A004 零件62 73 23 002-007
A004 零件62 33 45 011-066