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

where条件pl/sqlの配列をループします

    TABLEを使用できます コレクションの関数を使用して、数字/文字のリストを取得します。

    SELECT *
    FROM TABLE ( sys.odcinumberlist(8779254,8819930,8819931) );
    
    8779254
    8819930
    8819931
    

    ここでは、Oracleの内部VARRAYを使用しています。 32767の制限があります。独自のNESTED TABLEを使用できます タイプ。

    create OR REPLACE TYPE yourtype AS TABLE OF NUMBER;
    

    次にそれを選択します。

    SELECT *
    FROM TABLE ( yourtype(8779254,8819930,8819931) );
    

    したがって、クエリは単純に次のように記述できます

    SELECT x_name
    FROM table_x
    WHERE x_id IN ( SELECT * FROM 
           TABLE ( yourtype(8779254,8819930,8819931) ) );
    

    12.2以降では、TABLEを指定する必要もありません。 。

    SELECT * FROM yourtype(8779254,8819930,8819931) 動作します。




    1. 毎週のイベントをMySQLに保存する最良の方法は?

    2. phpサーバーERR_CONNECTION_REFUSED

    3. oracleはリモートSQLServerテーブルからデータを削除します

    4. MySQLが失敗します:mysql ERROR 1524(HY000):プラグイン'auth_socket'がロードされていません