Как исправить «Encountered the symbol» при создании процедуры магазина? - PullRequest
1 голос
/ 06 июня 2019

Я хотел бы создать процедуру, чтобы проверить, существуют ли записи, затем обновить еще, вставьте. Однако есть проблема, которую я пытался решить, но не могу ее решить. Пожалуйста, помогите.

CREATE TABLE JOB_RUN
(
DATE_KEY VARCHAR2(8),
JOB_NAME VARCHAR2(20),
START_DATE TIMESTAMP,
CTL_ROWS NUMBER,
LOAD_DATA_ROW NUMBER,
END_DATE TIMESTAMP,
FLAG_COMPLETED CHAR(1),
PRIMARY KEY (DATE_KEY,JOB_NAME)
);

Вот пример значения полей:

INSERT INTO JOB_RUN(DATE_KEY,JOB_NAME,START_DATE,CTL_ROWS,LOAD_DATA_ROW,END_DATE, FLAG_COMPLETED)
        VALUES('20110101','TABLE_NAME',SYSDATE,10,0, NULL, 'N');

Затем я создал процедуру для получения date_key и job_name

create or replace procedure check_job(pdate IN varchar2,pname IN varchar2) as
declare
v_count int;
    begin
        select count(*) into v_count from MISDBA.job_run where (date_key=pdate and job_name=pname);
        if v_count = 1 then
            update job_run
            set start_date=sysdate,ctl_rows=5;
        else         
        insert into misdba.job_run(date_key,job_name,start_date,ctl_rows,load_data_row,end_date, flag_completed)
        values(pdate,pname,sysdate,10,0, null, 'N');
        end if;
        commit;
    end;

После этого я запускаю следующий запрос для вызова PROCEDURE

BEGIN
EXECUTE CHECK_JOB('20200101','table2');
END;

Я получил эту ошибку:

Ошибка SQL [6550] [65000]: ORA-06550: строка 2, столбец 9: PLS-00103: обнаружен символ "CHECK_JOB "при ожидании одного из следующего:

: =.(@%; немедленный Символ «: =» был заменен на «CHECK_JOB» для продолжения. java.sql.SQLException: ORA-06550: строка 2, столбец 9: PLS-00103: Обнаружен символ «CHECK_JOB» при ожидании одного изследующее :: =. (@%; немедленное Символ ": =" был заменен на "CHECK_JOB" для продолжения.

1 Ответ

2 голосов
/ 06 июня 2019

Вы должны удалить EXECUTE:

BEGIN
 CHECK_JOB('20200101','table2');
END;
...