Как использовать тип таблицы в операторе выбора оракула - PullRequest
0 голосов
/ 11 октября 2018

Я создал указанный ниже тип в Oracle

create or replace TYPE "T_STRING_LIST" 
AS TABLE OF varchar2(4000)

и использовал его для сбора идентификаторов сотрудников.

V_EMP_ID_LIST T_STRING_LIST := T_STRING_LIST();


SELECT employee_id bulk collect
        INTO V_EMP_ID_LIST 
        FROM EMPLOYEE
        WHERE DEPT_ID = 101;

Теперь я хочу использовать этот V_EMP_ID_LIST в операторе выбора для выбора деталей издругой стол.

select * from employee_address
where employee_id in (V_EMP_ID_LIST);

Может кто-нибудь помочь, как это сделать.

1 Ответ

0 голосов
/ 11 октября 2018

Используйте оператор MEMBER OF:

DECLARE
  V_EMP_ID_LIST T_STRING_LIST;
  cur           SYS_REFCURSOR;
BEGIN
  SELECT employee_id
  BULK COLLECT INTO V_EMP_ID_LIST 
  FROM   EMPLOYEE
  WHERE  DEPT_ID = 101;

  OPEN cur FOR
    select *
    from   employee_address
    where employee_id MEMBER OF V_EMP_ID_LIST;
END;
/

или выражение коллекции таблиц:

DECLARE
  V_EMP_ID_LIST T_STRING_LIST;
  cur           SYS_REFCURSOR;
BEGIN
  SELECT employee_id
  BULK COLLECT INTO V_EMP_ID_LIST 
  FROM   EMPLOYEE
  WHERE  DEPT_ID = 101;

  OPEN cur FOR
    select *
    from   employee_address
    where employee_id IN ( SELECT COLUMN_VALUE FROM TABLE( V_EMP_ID_LIST ) );
END;
/
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...