ORACLE利用存储过程求和

ORACLE数据库内,需求为已经参数为一串ID,用引号逗号隔开(例如‘2’,‘3,’‘4’,‘5’),要从表ATT_PD_EQUI这张表里面将列 TYPE 这列内将等于参数内所有参数的值的总和得出(即要得到TYPE值等于2或3或4或5的所有数量的总和),求详细存储过程实现的语句。
最新回答
殇情

2024-09-22 07:33:19

一句话就搞定了,不用过程

Select Sum(no)
From (Select Regexp_Substr('2,3,4,5', '[^,]+', 1, Level) no
From Dual
Connect By Level <=
Length('2,3,4,5') - Length(Replace('2,3,4,5', ',')) + 1)
追问
数值的长度和个数都是不定的,要看传来的参数
追答
对啊,我这个就是不固定的,你随便都行
缺少你爱情的回应

2024-09-22 00:21:39

create or replace package pk_sum
begin
function containSum(param varchar2) return number;
end;

create or replace package body pk_sum
begin
function containSum(param varchar2) return number
is
rval number;
begin
select sum(type) into rval from ATT_PD_EQU t
where instr(param, t.TYPE) <> 0
return rval;
end;
end;