执行立即执行的问题

时间:2012-08-16 13:20:02

标签: oracle stored-procedures plsql mybatis

我需要查询像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;

执行立即导致问题。

1 个答案:

答案 0 :(得分:1)

它无效。使用集合或流水线函数或临时表将可能值列表传递给函数