Проблема с процедурой выполнения в PL / SQL Developer - PullRequest
11 голосов
/ 05 марта 2011

Я это моя первая попытка создать процедуру и выполнить ее. Сначала я создаю простую таблицу. Схема БД таблицы здесь:

Название таблицы: Ziaci

Колонки:

  • ZiakId - первичный ключ, номер
  • Фамилия, varchar2
  • FirstName, varchar2
  • TriedaId - подделать ключ, номер

Процедура хранения только вставляет данные в таблицу, я создал процедуру хранения с помощью этого SQL-команды:

create procedure ziaci_proc(surname_in in varchar2, 
firstname_in in varchar2, triedaid_in in number)
is
begin
  insert into ziaci (surname, firstname,triedaid) values (surname_in,firstname_in,triedaid_in);
  end;

И я пытаюсь назвать эту процедуру как:

execute ziaci_proc('X','Y',1)

Я получаю эту ошибку:

ORA-00900 неверный оператор SQL

Интегрированная среда разработки PL / SQL для разработчиков выделена красным словом выполнения.

Я проверяю эту процедуру, и она хорошо работает.

Я могу выполнить эту процедуру только с этой командой SQL:

begin
ziaci_proc('A','B',2);
end;

Что плохого, спасибо за помощь.

Ответы [ 2 ]

11 голосов
/ 05 марта 2011

Вызов хранимых процедур с использованием execute, как указано выше, относится к SQL * Plus. Фактически, SQL * Plus преобразует execute some_proc() в BEGIN some_proc(); END;. Вы можете убедиться в этом сами, попытавшись вызвать процедуру, которая не существует:

SQL> execute some_proc()
BEGIN some_proc(); END;

      *
ERROR at line 1:
ORA-06550: line 1, column 7:
PLS-00201: identifier 'SOME_PROC' must be declared
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored
11 голосов
/ 05 марта 2011

Я думаю, что вы пишете команду в «Окне SQL».Вы должны использовать «Командное окно» для успешного выполнения этой строки:

execute ziaci_proc('X','Y',1);
...