我需要查询一个像这样的表select count(id) from user where id in ('208018042','208001105')
,我已经编写了一个函数来执行此操作,它接受分号分隔的数据,但我得到无效的数字作为例外,我想我没有发送引号中的值,这里有什么问题。我需要传递像'208018042'208001105'这样的值,上面的单个查询被执行,但是下面的函数中的查询出现了一些问题:
FUNCTION p_get_count_id(p_invalue IN VARCHAR2) RETURN VARCHAR2 IS
v_splitTable split_tbl;
v_OptionValueList varchar2(4000);
v_in_optid_list varchar2(4000);
v_count number;
begin
v_in_optid_list := p_in_field_value;
if (v_in_optid_list is not null) then
v_in_optid_list := REPLACE(p_in_field_value, ';', ',');
EXECUTE IMMEDIATE 'select count(id)
from user
where id in
(' || v_in_optid_list || ')' bulk collect
into v_splitTable;
v_OptionValueList := joinstr(v_splitTable, '; ');
end if;
return v_OptionValueList;
End p_get_count_id;
立即执行导致问题。