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

OracleExampleへの一括収集を選択します

    前回のブログ投稿では、カーソル行タイプ型オブジェクトを使用したOracleBulkCollectの使用例を示しました。これは、最初にカーソルを作成し、次にカーソルタイプのオブジェクトを入力してからカーソルを開き、一括収集にフェッチして、最後にForallを使用してそれらを処理します。ただし、一時的な匿名PLSQLブロックを使用して1回だけデータを準備する必要があり、そのタスクを実行するためにあまり多くのコードを記述したくない場合があります。この種のシナリオでは、一括収集の選択を使用できます。 コードを書くのに多くの時間を無駄にすることなく、タスクをすばやく実行するオプション。

    以下は、EMP表からレコードを取得してBONUS表を更新し、画面に出力するPLSQLブロックの例です。

    SET SEVEROUTPUT ON;
    DECLARE
    TYPE t_emp IS TABLE OF emp%ROWTYPE;
    
    e_rec   t_emp;
    BEGIN
    SELECT *
    BULK COLLECT INTO e_rec
    FROM emp;
    
    FORALL i IN e_rec.FIRST .. e_rec.LAST
    update bonus set amount = e_rec(i).sal * 15 / 100
    where empno = e_rec(i).empno;
    
    Commit;
    
    FOR i IN e_rec.FIRST .. e_rec.LAST
    LOOP
    DBMS_OUTPUT.
    put_line (
    'Bonus Updated For Employee: '
    || e_rec (i).ename
    || ' '
    || 'Bonus: '
    || e_rec(i).sal * 15 / 100);
    END LOOP;
    END;

    1. MySQLおよびMariaDB移行用のトップオープンソースツール

    2. ORACLE-ORA-01843:有効な月ではありません

    3. SQL Server Express(2012)とLocalDBに違いはありますか?

    4. 転送されたレコードのパフォーマンスの問題の特定と修正