Использование переменной в SELECT и вывод результата как обычный SELECT - PullRequest
0 голосов
/ 08 ноября 2019

У меня есть SELECT, который довольно медленный, и я думаю, что он будет быстрым при использовании двух SELECT вместо подвыбора или объединения.

В основном мне нужно выбрать некоторые числа из таблицыи использую их в выражении where другого SELECT.

На данный момент у меня есть работа:

DECLARE
  v_skus VARCHAR2(255);
BEGIN
  SELECT LISTAGG(num,',') WITHIN GROUP (ORDER BY num) INTO v_skus FROM VIEWNAME WHERE parent IN ('1000');
  DBMS_OUTPUT.PUT_LINE('v_skus=' || v_skus);
END;

Это даст мне '1001,1002' в переменной.

Я хочу использовать это сейчас в другом SELECT, например

... WHERE number IN (v_skus)

Если я добавлю второй SELECT в блок BEGIN, я получу сообщение об ошибке "В этом случае ожидается предложение INTOОператор SELECT ".

Итак, нужно ли мне использовать другую переменную для фактического результата, и как мне добиться фактического результата в виде таблицы, как это сделал бы обычный SELECT?

мой подход неверен?

1 Ответ

0 голосов
/ 08 ноября 2019

Почему вы используете 2 разных выбора, когда вы можете использовать один вложенный выбор -

DECLARE
  v_skus VARCHAR2(255);
BEGIN
  SELECT YOUR_FIRST_QUERY
  INTO v_skus
  FROM YOUR_OTHER_TABLE
  WHERE WHERE number IN (SELECT num FROM VIEWNAME WHERE parent IN ('1000'));
  DBMS_OUTPUT.PUT_LINE('v_skus=' || v_skus);
END;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...