创建存储过程时如何解决“遇到符号”问题?

时间:2019-06-06 09:05:51

标签: oracle stored-procedures compiler-errors

我想创建一个过程来检查记录是否存在,然后更新,否则插入。但是,有一个问题我试图解决,但无法解决。请帮忙。

import time, cv2


video=cv2.VideoCapture(0)
a=0
while True:
    a=a+1
    check, frame= video.read()

    gray=cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
    cv2.imshow("Capturing",gray)

    key=cv2.waitKey(1)

    if key==ord('q'):
        break
print(a)

video.release()
cv2.destroyAllWindows

这是字段的样本值:

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)
);

然后,我创建了接收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');

之后,我在下面的查询中运行此程序以调用PROCEDURE

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;

我收到此错误:

  

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 个答案:

答案 0 :(得分:2)

您必须删除EXECUTE

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