простой способ вернуть 2 или более строк, используя SELECT в pl / sql - PullRequest
1 голос
/ 08 февраля 2011

Я пытаюсь найти самый простой способ вернуть 2 или более строк с помощью оператора select в pl / sql для вывода sqlplus.Вот базовый пример.

begin
  select sysdate,'12345' xid from dual
    union all
  select sysdate,'67890' xid from dual;
end;
/

Ошибка: «В этом операторе SELECT ожидается предложение INTO»

Ответы [ 3 ]

2 голосов
/ 08 февраля 2011

Вы бы использовали курсор для возврата результата запроса:

SQL> VARIABLE x REFCURSOR
SQL> BEGIN
  2     OPEN :x FOR SELECT ROWNUM FROM dual CONNECT BY LEVEL <= 3;
  3  END;
  4  /

PL/SQL procedure successfully completed.

SQL> PRINT x

    ROWNUM
----------
         1
         2
         3
2 голосов
/ 08 февраля 2011

Да, вы можете вернуть ResultSet из PL / SQL. Взгляните на этот URL .

0 голосов
/ 01 октября 2013

При написании кода SQL в блоке BEGIN-END вы не можете отобразить его набор результатов в редакторе. Обрежьте BEGIN-END из вашего запроса, и он с радостью отобразит результаты.

По сути, код в блоке BEGIN-END не используется для отображения результатов, вместо этого он используется для обработки данных. Поэтому вы должны просто написать:

SELECT SYSDATE,'12345' XID FROM DUAL
UNION ALL
SELECT SYSDATE,'67890' FROM DUAL;

для отображения набора результатов в редакторе SQL.

Также обратите внимание, что я удалил псевдоним "XID" во втором операторе SELECT: вам нужно давать псевдонимы столбцов только в первом запросе в операторе UNION / UNION ALL.

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