2013-05-30 5 views
0

Почему это не работает? Я запускаю это в оракуле. я хочу создать aprocedure так:создать процедуру в oracle

CREATE OR REPLACE PROCEDURE ME(X in NUMBER)IS 
declare 
num1 number; 
BEGIN 
num1:=1; 
insert into a (year) values(7);  
END; 

это ошибка:

PLS-00103: Обнаружен символ «DECLARE», когда ожидает одно из следующих действий: начать функция Прагма процедура подтип типа текущий курсор удалить существует предшествующий внешний язык Для продолжения замены символа "begin" вместо "DECLARE". 7/5 PLS-00103: Обнаружен символ «конец файла», когда ожидает одно из следующих действий: (начало случай объявить конечный выход исключение для Goto, если цикл мод нулевой Прагма рейз возвращение выберите обновление в то время как с < < продолжают закрывать текущие удаления выборки блокировки вставки открытого множества отката точки сохранения SQL выполнить обязательство FORALL продувки труб слияния

ответ

3

DECLARE используется только в анонимных PL/SQL блоков и вложенную PL блоки/SQL. вы бы не использовать его, когда вы объявив процедуру. Предполагая, что таблица A существует с столбцом YEAR, что-то вроде

CREATE OR REPLACE PROCEDURE ME(X in NUMBER) 
IS 
    num1 number; 
BEGIN 
    num1:=1; 
    insert into a (year) values(7);  
END; 

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

1

Try, как

CREATE OR REPLACE PROCEDURE me (x IN NUMBER) 
IS 
    num1  NUMBER; 
BEGIN 
    num1 := 1;  
    insert into a (year) values(7);  
END; 
/
Смежные вопросы