sql >> データベース >  >> RDS >> Oracle

WHEREIN句で使用する値の配列をOracleプロシージャに送信する

    1つの方法は、VARRAYを使用することです。 PARAM_THAT_WILL_BE _USED_INSIDE_WHERE_IN の場合 パラメータを設定し、ここで説明されているように使用します
    ただし、c#から呼び出す方法はわかりません。

    もう1つの方法は、質問で述べたようにcsvでvarchar2を使用することですが、次のように動的SQLを使用しません。

    CREATE PROCEDURE MY_TEST_PROC(
      CUR OUT SYS_REFCURSOR,
      PARAM_THAT_WILL_BE varchar2)
    AS
    BEGIN
      OPEN CUR FOR 
        SELECT * 
          FROM MY_TABLE 
         WHERE COL1 IN (
            select regexp_substr(PARAM_THAT_WILL_BE, '[^,]+',1,level) p
              from dual t
           connect by level <= regexp_count(PARAM_THAT_WILL_BE, ',') + 1
    )
    END;
    


    1. GROUP_CONCAT()と同等のSQL Server

    2. SQL AS:使用法、例、およびそれがどのようにあなたに最も利益をもたらすことができるか

    3. MySQLに書き込むときにTextAreaからの改行を保持する

    4. すべての列を選択する方法、および同じクエリ内のcount(*)