17,377
社区成员
发帖
与我相关
我的任务
分享
CREATE OR REPLACE FUNCTION GetApprovalTeamName(P_STRING IN VARCHAR2)
RETURN varchar2 AS
v_return varchar2(30000);
v_par varchar2(1000);
BEGIN
select substr(P_STRING,0,LEN(P_STRING) - 1) INTO v_par from dual;
select replace(v_par,',',''',''') into v_par from dual;
v_par := '''' || v_par || '''';
select listagg(pi.full_name,',') within group (order by pi.full_name)
into v_return
from ba_person_info pi
where pi.card_no in ( v_par );
return v_return;
END;
以上 是我写的 一个 方法
将 一个字符串 10084138,10044252,0096000486, 传到这个方法中
之后 才分 替换 截取 后 得到一个 '10084138','10044252','0096000486'
使用这个字符串 当中 参数 执行 查询 付给 v_return 这个变量
在调用 这个 方法 的时候 返回 的是空
但是 我 在 直接 查询 的时候 是 可以 查询到 数据 的
求 大神 帮忙 看一下
CREATE OR REPLACE FUNCTION GetApprovalTeamName(P_STRING IN VARCHAR2)
RETURN varchar2 AS
v_return varchar2(30000);
v_par varchar2(1000);
BEGIN
with t as (
select regexp_substr(P_STRING, '[^,]+', 1, level) col
from dual
connect by level <= regexp_count(P_STRING, '\,') + 1);
select listagg(pi.full_name,',') within group (order by pi.full_name)
into v_return
from ba_person_info pi
where pi.card_no in ( select col from t );
return v_return;
END;
CREATE OR REPLACE FUNCTION GetApprovalTeamName(P_STRING IN VARCHAR2)
RETURN varchar2 AS
v_return varchar2(30000);
v_par varchar2(1000);
BEGIN
with t as (
select regexp_substr('444.555.666', '[^.]+', 1, level) col
from dual
connect by level <= regexp_count('444.555.666', '\.') + 1)
select listagg(pi.full_name,',') within group (order by pi.full_name)
into v_return
from ba_person_info pi
where pi.card_no in ( select col from t );
return v_return;
END;
试试这样,把你要拆分的语句,行转列做成临时表,然后在in中查询这个临时表就可以了