Как выполнить хранимую процедуру оракула? - PullRequest
45 голосов
/ 06 декабря 2009

Я использую Oracle 10g Express Edition. Это хороший интерфейс для разработчиков БД. Но я сталкиваюсь с некоторыми проблемами при выполнении хранимых процедур.

Процедура:

create or replace procedure temp_proc is
begin
  DBMS_OUTPUT.PUT_LINE('Test');
end

успешно создан. Но когда я выполню:

execute temp_proc;

показывает ORA-00900: недопустимый оператор SQL

Так что помощь здесь нужна

Ответы [ 4 ]

69 голосов
/ 07 декабря 2009

Execute - это sql * плюс синтаксис .. попробуйте перевести ваш вызов в начало .. конец, как это:

begin 
    temp_proc;
end;

(хотя Джеффри говорит, что это не работает в APEX ... но вы пытаетесь заставить его работать в SQLDeveloper ... попробуйте там меню "Выполнить".)

3 голосов
/ 06 декабря 2009

Oracle 10g Express Edition поставляется со встроенным Oracle Application Express (Apex). Вы запускаете это в окне команд SQL, которое не поддерживает синтаксис SQL * Plus.

Это не имеет значения, потому что (как вы обнаружили) синтаксис BEGIN ... END работает в Apex.

2 голосов
/ 13 марта 2013

Оба 'is' и 'as' являются допустимым синтаксисом. По умолчанию вывод отключен . Попробуйте процедуру, которая также разрешает вывод ...

create or replace procedure temp_proc is
begin
  DBMS_OUTPUT.ENABLE(1000000);
  DBMS_OUTPUT.PUT_LINE('Test');
end;

... и вызвать его в блоке PLSQL ...

begin
  temp_proc;
end;

... так как SQL не процедурный.

0 голосов
/ 06 декабря 2009

Вы пытались исправить синтаксис следующим образом?:

create or replace procedure temp_proc AS
begin
  DBMS_OUTPUT.PUT_LINE('Test');
end;
...