Как вывести результат скрипта PL / SQL в сетку? - PullRequest
0 голосов
/ 23 мая 2018

Я пытаюсь выяснить, как можно вывести результаты скрипта PL / SQL в таблицу результатов так же, как выводятся результаты простого запроса.Я новичок в Oracle с SQL Server, поэтому я могу пропустить что-то очень простое.Например, как бы я посмотрел результаты чего-то вроде следующего простого сценария T-SQL (PL SQL Server)?Есть ли какая-нибудь функция print_to_grid?Или, возможно, с помощью курсора?Я знаю о dbms_output, но определенно не хочу объединять строки из каждого скрипта, из которого я хочу видеть результаты.

declare @emps table(employeeId int, name varchar(40)

insert into @emps
select employeeID, name
from employees

select * from @emps

Кажется, это должна быть самая простая вещь в мире, но я не могу найти прямой ответ на это.Любая помощь или рекомендации инструмента будет принята с благодарностью.

1 Ответ

0 голосов
/ 24 мая 2018

Похоже, что вы после курсора ссылки.Например,

SQL> variable r refcursor
SQL>
SQL> begin
  2    open :r for
  3    select empno, ename
  4    from scott.emp;
  5  end;
  6  /

PL/SQL procedure successfully completed.

SQL>
SQL> print r

     EMPNO ENAME
---------- ----------
      7369 SMITH
      7499 ALLEN
      7521 WARD
      7566 JONES
      7654 MARTIN
      7698 BLAKE
      7782 CLARK
      7788 SCOTT
      7839 KING
      7844 TURNER
      7876 ADAMS
      7900 JAMES
      7902 FORD
      7934 MILLER

14 rows selected.

В тот момент, когда вы открываете этот прекурсор, результат предопределен - так что вам не нужно беспокоиться о блокировках чтения или согласованности данных и т. Д. Например, я открою ссылкукурсор, когда в таблице есть строки, а затем удалите их ... мои напечатанные данные остаются такими же, какими они были во время открытия курсора.

SQL>
SQL>
SQL>
SQL> begin
  2    open :r for
  3    select empno, ename
  4    from scott.emp;
  5  end;
  6  /

PL/SQL procedure successfully completed.

SQL>
SQL> delete from scott.emp;

14 rows deleted.

SQL>
SQL> print r

     EMPNO ENAME
---------- ----------
      7369 SMITH
      7499 ALLEN
      7521 WARD
      7566 JONES
      7654 MARTIN
      7698 BLAKE
      7782 CLARK
      7788 SCOTT
      7839 KING
      7844 TURNER
      7876 ADAMS
      7900 JAMES
      7902 FORD
      7934 MILLER

14 rows selected.

SQL>
SQL>
SQL> rollback;

Rollback complete.

SQL>
...