Подтвердить что ты не робот

Как выполнить хранимую процедуру оракула?

Я использую экспресс-выпуск oracle 10g. У этого есть хорошие ui для разработчиков db. Но я столкнулся с некоторыми проблемами при выполнении хранимых процедур.

Процедура:

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

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

execute temp_proc;

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

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

4b9b3361

Ответ 1

Execute представляет собой sql * plus синтаксис.. попробуйте обернуть ваш вызов в начале.. конец вот так:

begin 
    temp_proc;
end;

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

Ответ 2

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

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

Ответ 3

Оба "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 не является процедурным.

Ответ 4

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

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