質問

Please assume I am using the following code:

  TYPE tb_MY_TABLE
  IS
     TABLE OF MY_TABLE%ROWTYPE
        INDEX BY PLS_INTEGER;

  tb_c3_MY_TABLE          tb_MY_TABLE;

  CURSOR c3_MY_TABLE (
     p3_IDENTIFIER_01   IN            VARCHAR2,
     p3_IDENTIFIER_02   IN            VARCHAR2
  )
  IS
     SELECT    IDENTIFIER_01,
               IDENTIFIER_02,
               STRING_01,
               STRING_02,
               STRING_03
       FROM   MY_TABLE
      WHERE   MY_TABLE.IDENTIFIER_01 = p3_IDENTIFIER_01
              AND MY_TABLE.IDENTIFIER_02 = p3_IDENTIFIER_02;

  OPEN c3_MY_TABLE (v_IDENTIFIER_01, v_IDENTIFIER_02);

  FETCH c3_MY_TABLE BULK COLLECT INTO   tb_c3_MY_TABLE;

  CLOSE c3_MY_TABLE;

  BEGIN
    FOR v_INDX_TER IN 1 .. tb_c3_MY_TABLE.COUNT

      LOOP
        ----- .....
      END LOOP;

  END;

How should I change the code if c3_MY_TABLE is on SELECT DISTINCT IDENTIFIER_01, IDENTIFIER_02 FROM MY_TABLE?

  CURSOR c3_MY_TABLE (
     p3_IDENTIFIER_01   IN            VARCHAR2,
     p3_IDENTIFIER_02   IN            VARCHAR2
  )
  IS
     SELECT    DISTINCT IDENTIFIER_01,
                        IDENTIFIER_02
       FROM   MY_TABLE
      WHERE   MY_TABLE.IDENTIFIER_01 = p3_IDENTIFIER_01
              AND MY_TABLE.IDENTIFIER_02 = p3_IDENTIFIER_02;

Thank you in advance for your kind suggestions!

役に立ちましたか?

解決

Please change your declaration( in DECLARE block) like this, and you are done. DISTINCT applies to entire row you SELECT disregarding the number of columns actually in the TABLE. It happens after the Selection process only.

CURSOR c3_MY_TABLE (
     p3_IDENTIFIER_01   IN            VARCHAR2,
     p3_IDENTIFIER_02   IN            VARCHAR2
  )
  IS
     SELECT    DISTINCT IDENTIFIER_01,
                        IDENTIFIER_02
       FROM   MY_TABLE
      WHERE   MY_TABLE.IDENTIFIER_01 = p3_IDENTIFIER_01
              AND MY_TABLE.IDENTIFIER_02 = p3_IDENTIFIER_02;


TYPE TY_ROW IS RECORD
(
   IDENTIFIER_01 MY_TABLE.IDENTIFIER_01%TYPE,
   IDENTIFIER_02 MY_TABLE.IDENTIFIER_02%TYPE
);

TYPE TY_TABLE is TABLE OF TY_ROW;

tb_c3_MY_TABLE TY_TABLE;
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top