0

次のようなテーブルをクエリする必要があります。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;

即時実行が問題を引き起こしています。

4

1 に答える 1

1

うまくいかないだろう。コレクションまたはパイプライン関数または一時テーブルのいずれかを使用して、可能な値のリストを関数に渡します

于 2012-08-16T13:35:49.330 に答える