Запуск Oracle хранимой процедуры - PullRequest
0 голосов
/ 05 октября 2009

У меня есть файл sql, который содержит простую процедуру для печати «Привет», как,

CREATE OR REPLACE PROCEDURE skeleton 
IS
BEGIN
  DBMS_OUTPUT.PUT_LINE('Hi');
END;

Когда я пытаюсь выполнить это из самого файла sql, он просто компилируется и не запускается.

Я добавил как,

CREATE OR REPLACE PROCEDURE skeleton 
IS
BEGIN
  DBMS_OUTPUT.PUT_LINE('Hi');
END;
/ /* this is required else it throws me compilation error*/
set serveroutput on
EXECUTE skeleton;

Я пытался вызвать тот же самый скелет из другого файла sql и даже из графического интерфейса sqldeveloper, который также не выполнял это. Только командная строка sqlplus помогает мне. Дайте мне знать, что мне не хватает, и решение для этого.

Ответы [ 4 ]

2 голосов
/ 05 октября 2009

Вот шаги, которые я предпринял, используя SQL Plus

SQL> CREATE OR REPLACE PROCEDURE skeleton
  2  IS
  3  BEGIN
  4    DBMS_OUTPUT.PUT_LINE('Hi');
  5  END;
  6  /

Procedure created.

SQL> set serveroutput on
SQL> EXECUTE skeleton;
Hi

PL/SQL procedure successfully completed.

SQL>

Можете ли вы начать новый сеанс sqlplus, повторить эти шаги и опубликовать содержимое?

1 голос
/ 05 октября 2009

Единственное изменение, которое мне пришлось внести в ваш sql, чтобы разрешить запуск его как @file, - это удалить комментарий. Это все содержимое файла .sql:

CREATE OR REPLACE PROCEDURE skeleton
IS
BEGIN
  DBMS_OUTPUT.PUT_LINE('Hi');
END;
/
set serveroutput on
EXECUTE skeleton;

Вы должны получить что-то вроде этого:

C:\Temp>sqlplus username/password @skeleton.sql

SQL*Plus: Release 11.1.0.6.0 - Production on Mon Oct 5 17:10:46 2009

Copyright (c) 1982, 2007, Oracle.  All rights reserved.

Connected to:
Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

Procedure created.

Hi

PL/SQL procedure successfully completed.

SQL>
0 голосов
/ 05 октября 2009

Попробуйте установить setoutout сервера перед dbms_output.

0 голосов
/ 05 октября 2009

В SQL Developer вам нужна кнопка «Выполнить скрипт», которая является второй кнопкой в ​​левом верхнем углу (маленькая зеленая стрелка перед документом) вместо кнопки с большой зеленой стрелкой.

Это бросило меня в первый раз, когда я использовал его.

SQL Developer
(источник: devshed.com )

Причина, по которой ваш первый пример компилируется и не запускается, заключается в том, что вы фактически не просите его запустить. Вы создаете процедуру внутри базы данных, которая работает правильно, но не вызывает ее. Во втором блоке у вас есть EXECUTE, где он и работает.

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