Как выполнить хранимую процедуру оракула?
Я использую экспресс-выпуск oracle 10g. У этого есть хорошие ui для разработчиков db. Но я столкнулся с некоторыми проблемами при выполнении хранимых процедур.
Процедура:
create or replace procedure temp_proc is
begin
DBMS_OUTPUT.PUT_LINE('Test');
end
он создан успешно. Но когда я выполняю:
execute temp_proc;
он показывает ORA-00900: неверный оператор SQL
Так нужна помощь здесь
Ответы
Ответ 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;