create or replace function get_offiname(pni_offiname varchar2)
return VARCHAR is
RESULT VARCHAR2(1000);
begin
for cur1 in (select t.office_id from new_alm_offi t
where to_char(t.office_id) in (pni_offiname)
)
LOOP
RESULT := result||chr(39)||TRIM(cur1.office_id)||chr(39)||',';
END LOOP;
result := '('||substr(result,1,length(result)-1)||')';
return(RESULT);
end get_offiname;
------------------------------------------------
我的pni_offiname参数需要输入 1001,1002,1003
把这个参数直接拿到sql中执行没问题,但在test这个函数的时候总是不成功,
输入一个参数,比如1001 没问题,返回('1001') 但输入1001,1002却没有返回,就只有一个() ,而我想得到的结果是('1001','1002')
好像这个函数没有执行sql就到result了
return VARCHAR is
RESULT VARCHAR2(1000);
begin
for cur1 in (select t.office_id from new_alm_offi t
where to_char(t.office_id) in (pni_offiname)
)
LOOP
RESULT := result||chr(39)||TRIM(cur1.office_id)||chr(39)||',';
END LOOP;
result := '('||substr(result,1,length(result)-1)||')';
return(RESULT);
end get_offiname;
------------------------------------------------
我的pni_offiname参数需要输入 1001,1002,1003
把这个参数直接拿到sql中执行没问题,但在test这个函数的时候总是不成功,
输入一个参数,比如1001 没问题,返回('1001') 但输入1001,1002却没有返回,就只有一个() ,而我想得到的结果是('1001','1002')
好像这个函数没有执行sql就到result了
当然不对了
for cur1 in (select t.office_id from new_alm_offi t
where to_char(t.office_id) in (pni_offiname)
的in 处理上输入1001,1002肯定只能返回t.office_id ='1001,1002'而不是你要的结果是('1001','1002')可以考虑改成
where instr( ','||pni_offiname||',', ','||to_char(t.office_id)||',')>0