你好堆栈社区,
在过去的几天里,我一直被我最初认为是一个相对简单的 SQR 更新所困扰。
简而言之,过程 Process-Main 选择 COMPANY = 'ABC' 的所有员工,然后我需要将记录插入到与每个员工 ID 关联的 TableA 和 TableB
TableB 是空的,所以我只是为每个 empID 运行一个 INSERT 语句,并且正在添加记录而没有任何问题。
但是,某些 empID 可能在 TableA 中有现有记录,我需要在将 INSERT 插入 TableA 之前检查这些记录。
奇怪的是,当我执行此 SQR 时,我收到以下错误
(SQR 3721) Bad param found on 'BEGIN-SELECT' line;
(SQR 3704) Missing procedure name.
A.EMPLID
我很确定这是一个语法问题,或者我只是在放屁……有没有人有任何建议/建议?
这是我的伪代码
!***************************
begin-procedure Process-Main
!***************************
begin-select distinct
J.DEPTID
J.EMPLID
J.EFFDT
do Insert-TableA-Record
do Insert-TableB-Record
FROM PS_JOB J
WHERE J.COMPANY = 'ABC'
end-select
end-procedure
!****************************
begin-procedure Insert-TableA-Record
!****************************
let $found = 'N'
begin-select
A.EMPLID
let $found = 'Y'
FROM TableA A
WHERE A.EMPLID=&J.EMPLID
AND A.PLAN_TYPE='P1234'
end-select
if $found = 'N'
begin-sql ON-ERROR = Abort-Update
INSERT INTO TableA (
EMPLID,
PLAN_TYPE
)
VALUES (
&J.EMPLID,
'P1234'
);
end-sql
end-if
end-procedure
!****************************
begin-procedure Insert-TableB-Record
!****************************
begin-sql ON-ERROR = Abort-Update
!INSERT INTO TableB STMT HERE...
!everything runs fine in this procedure
end-sql
end-procedure