Ошибка создания процедуры: объявить и завершить ошибку - PullRequest
0 голосов
/ 09 марта 2019

Я начинаю с процедур и теряюсь из-за этих проблем.

Я не понимаю, почему я получаю ошибку, когда добавляю процедуру, потому что я думаю, что это нормально, и это также не приводит к ошибке в конце.

Я прилагаю код.

Ошибка:

LINE / COL ERROR


10/1 PLS-00103: Обнаружен символ "ЗАЯВИТЬ"
16/4 PLS-00103: Обнаружен символ «конец файла» при ожидании одного из следующих действий:
(начальный случай объявлять конечное исключение выход для goto, если цикл mod null прагма Повышение возврата выбор обновления, в то время как с << продолжить закрыть текущее удаление выборка блокировка вставка открытый набор точек отката отката набор sql выполнить фиксацию для очистки канала слияния </p>

Код:

CREATE OR REPLACE PROCEDURE INSERT_MOVIMIENTOS (
INSERTMOV_COD_BANCO  IN NUMBER,
INSERTMOV_COD_SUCUR  IN NUMBER,
INSERTMOV_NUM_CTA    IN NUMBER,
INSERTMOV_FECHA_MOV  IN DATE,
INSERTMOV_TIPO_MOV   IN CHAR,
INSERTMOV_IMPORTE    IN NUMBER
);

DECLARE
    sql_str VARCHAR2(500):='';

BEGIN
    sql_str:=sql_str||'INSERT INTO MOVIMIENTOS (';
    dbms_output.put_line(sql_str);
END;    
/

Ответы [ 2 ]

1 голос
/ 09 марта 2019

Пример синтаксиса:

create or replace procedure insert_movimientos
    ( insertmov_cod_banco in number
    , insertmov_cod_sucur in number
    , insertmov_num_cta   in number
    , insertmov_fecha_mov in date
    , insertmov_tipo_mov  in varchar2
    , insertmov_importe   in number )
is
    sql_str varchar2(500) := 'INSERT INTO MOVIMIENTOS (';
begin
    dbms_output.put_line(sql_str);
end;
/

Конечная косая черта предназначена для клиентского приложения, поэтому может не потребоваться в зависимости от используемого вами инструмента.

Я изменил тип данных для insertmov_tipo_mov,char добавляет пробелы, которые никому не нужны, и предоставляется в основном для совместимости с ANSI.Лучше всего использовать стандартный тип.

Еще лучше, используйте table name.columnname%type, чтобы привязать его к типу соответствующего столбца таблицы.

Многие примеры в Интернете приведены в верхнем регистре, так как нетЯсная причина.Вы, как правило, не пишете компьютерный код в верхнем регистре.

0 голосов
/ 09 марта 2019

Удалить лишние ; или написать IS

Синтаксис процедуры создания

CREATE OR REPLACE PROCEDURE INSERT_MOVIMIENTOS (
    ...
)
IS
    sql_str VARCHAR2(500):='';
    ...
;
...