Я хочу написать процедуру с входным параметром в виде одного или нескольких значений и вернуть курсор ref согласно вводу - PullRequest
0 голосов
/ 24 июня 2019

Я хочу реализовать как показано ниже:

CREATE OR REPLACE PROCEDURE INPUT_XML (v_sne_id varchar2(10) -- input can be single or multiple values, 
                              v_card_name varchar2(10) DEFAULT NULL, 
                              v_port_no varchar2(10) DEFAULT NULL, 
                              v_refcur OUT SYS_REFCURSOR)

AS

BEGIN
IF (card_name is null and port_no is null )
then
open v_refcur for
select * from table where sne_id in (all the input sneId(s) );
end if;
END INPUT_XML:

1 Ответ

3 голосов
/ 24 июня 2019

Вы можете создать и использовать пользовательскую коллекцию TYPE с функцией TABLE.

Тип

CREATE OR REPLACE TYPE sne_id_type IS TABLE OF varchar2(10);

Процедура

CREATE OR REPLACE PROCEDURE input_xml (
     v_sne_id    sne_id_type,  --use the parameter of the collection type
     v_card_name VARCHAR2 DEFAULT NULL,
     v_port_no   VARCHAR2 DEFAULT NULL,
     v_refcur    OUT      SYS_REFCURSOR
) AS
BEGIN
     IF ( v_card_name IS NULL AND v_port_no IS NULL ) THEN
          OPEN v_refcur FOR SELECT *
                            FROM tablename
                            WHERE sne_id IN ( SELECT column_value
                                              FROM TABLE ( v_sne_id )
                                            );

     END IF;
END input_xml;
/

Для передачинесколько значений при выполнении, вы можете сделать

BEGIN
  INPUT_XML(sne_id_type('ID1','ID2','ID3'), 'CARD', null,null);
END;
/
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...