【发布时间】:2019-06-06 09:05:51
【问题描述】:
我想创建一个程序来检查记录是否存在然后更新其他插入。但是,有一个问题我试图解决它但我无法解决它。请帮助。
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”以继续。
【问题讨论】:
-
与您遇到的错误无关,但您的更新是否应该与
select count(*)具有相同的过滤条件?
标签: oracle stored-procedures compiler-errors