выбор нескольких столбцов в коллекции pl / sql - PullRequest
0 голосов
/ 08 августа 2011

На самом деле я создал следующую процедуру, которая работает нормально.

CREATE or REPLACE PROCEDURE GET_NOS(
firstDate IN DATE,
secondDate IN DATE,
thirdDate IN DATE,
fourthDate IN DATE,
test IN VARCHAR2,
Slnt_Entity OUT TEST.RefCsr
)
AS
 DemoTable CRITERIA_LIST_TABLE;
 BEGIN


SELECT column1 BULK COLLECT INTO DemoTable FROM opr_test where call_date between firstDate AND secondDate AND id=test
MINUS
SELECT column1 FROM opr_test where call_date between thirdDate AND fourthDate AND id=test;


OPEN Slnt_Entity FOR SELECT * FROM TABLE(
                                            CAST (
                                                    DemoTable AS CRITERIA_LIST_TABLE
                                                 )
                                    ) Nos;

END;
/

2.second

create or replace TYPE "CRITERIA_LIST_TABLE" as table of varchar2(20);
/
  1. Third

    create or replace PACKAGE "TEST"
    AS
    TYPE RefCsr IS REF CURSOR;
    END TEST;
     /
    

    Теперь я хочу изменить свой запрос следующим образом

    SELECT column1,column2 BULK COLLECT INTO DemoTable FROM opr_test where call_date between firstDate AND secondDate AND id=test
    MINUS
    SELECT column1,column2 FROM opr_test where call_date between thirdDate AND fourthDate AND id=test;
    

поэтому я изменил процедуру как

CREATE or REPLACE PROCEDURE GET_NOS(
firstDate IN DATE,
secondDate IN DATE,
thirdDate IN DATE,
fourthDate IN DATE,
test IN VARCHAR2,
Slnt_Entity OUT TEST.RefCsr
 )
AS

CURSOR c1 IS SELECT column1,column2 FROM opr_test;
  create or replace TYPE "ABC" IS TABLE OF c1%ROWTYPE;
DemoTable ABC;

BEGIN


 SELECT column1 BULK COLLECT INTO DemoTable FROM opr_test where call_date between firstDate AND secondDate AND id=test
 MINUS
 SELECT column1 FROM opr_test where call_date between thirdDate AND fourthDate AND id=test;


  OPEN Slnt_Entity FOR SELECT * FROM TABLE(
                                            CAST (
                                                    DemoTable AS CRITERIA_LIST_TABLE
                                                 )
                                    ) Nos;

  END;
  /

Но это неверно, пожалуйста, скажите, как будет выглядеть процедура

1 Ответ

0 голосов
/ 11 августа 2011

user595014, чтобы помочь вам решить возникшую проблему и задать несколько вопросов на StackOverflow.Прочтите эту статью от ORACLE-BASE о создании и возврате типов оракула REF_CURSOR.

Если вы прочитаете все это, это также даст вам демонстрацию того, как вернуть ref_cursor в вызывающую Java-программу (о чем вы меня спрашивалив предыдущем вопросе).

Это даст вам все необходимое для решения вашей проблемы.

http://www.oracle -base.com / articles / misc / UsingRefCursorsToReturnRecordsets.php

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...