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

カーソル内でレコード型を呼び出すことはできますか?

    カーソルで使用する前にレコードタイプを宣言してから、レコードがカーソルに渡されるように変数を宣言してから、カーソルをループする必要があります。

    DECLARE
      TYPE dtype_amount IS RECORD (
        typecode DD_DONOR.TYPECODE%TYPE,
        amount   DD_PLEDGE.PLEDGEAMT%TYPE
      );
    
      CURSOR donnor_pledge (p_typeamount dtype_amount ) IS
        SELECT d.FIRSTNAME,
               d.LASTNAME,
               p.PLEDGEAMT
        FROM   DD_DONOR d
               INNER JOIN DD_PLEDGE p
               USING (IDDONOR)
        WHERE d.TYPECODE  = p_typeamount.typecode
        AND   p.PLEDGEAMT > p_typeamount.amount;
    
      p_typeamount dtype_amount;
      p_name_amount donnor_pledge%ROWTYPE;
    BEGIN
      p_typeamount.typecode := 'I';
      p_typeamount.amount   := 250;
      OPEN donnor_pledge(p_typeamount);
      LOOP
        FETCH donnor_pledge INTO p_name_amount;
        EXIT WHEN donnor_pledge%NOTFOUND;
        DBMS_OUTPUT.PUT_LINE('Donor name: ' || p_name_amount.FIRSTNAME || ' ' || p_name_amount.LASTNAME);
        DBMS_OUTPUT.PUT_LINE('Pledge amount: ' || p_name_amount.PLEDGEAMT);
      END LOOP;
      CLOSE donnor_pledge;    
    END;
    /
    

    または、カーソルに2つのパラメータを使用して、レコードなしで実行できます。

    DECLARE
      CURSOR donnor_pledge (p_typecode CHAR, p_amount NUMBER ) IS
        SELECT d.FIRSTNAME,
               d.LASTNAME,
               p.PLEDGEAMT
        FROM   DD_DONOR d
               INNER JOIN DD_PLEDGE p
               USING (IDDONOR)
        WHERE d.TYPECODE  = p_typecode
        AND   p.PLEDGEAMT > p_amount;
      
      p_name_amount donnor_pledge%ROWTYPE;
    BEGIN
      OPEN donnor_pledge('I', 250);
      LOOP
        FETCH donnor_pledge INTO p_name_amount;
        EXIT WHEN donnor_pledge%NOTFOUND;
        DBMS_OUTPUT.PUT_LINE('Donor name: ' || p_name_amount.FIRSTNAME || ' ' || p_name_amount.LASTNAME);
        DBMS_OUTPUT.PUT_LINE('Pledge amount: ' || p_name_amount.PLEDGEAMT);
      END LOOP;
      CLOSE donnor_pledge;    
    END;
    /
    

    db <> fiddle こちら



    1. 日付形式(DBまたは出力)をdd / mm/yyyyに変更します-PHPMySQL

    2. SQLServerのテーブルを参照するオブジェクトを特定する

    3. AndroidとOracleデータベースを接続するための最良の方法は何ですか?

    4. Oracle SQL Select Matching Query