Report BEGIN-SELECT语句出现运行时错误的SQR过程

Report BEGIN-SELECT语句出现运行时错误的SQR过程,report,peoplesoft,sqr,Report,Peoplesoft,Sqr,你好,Stack社区 在过去的几天里,我一直被一个相对简单的SQR更新所困扰 简而言之,ProcessProcessMain选择COMPANY='ABC'的所有员工,然后我需要在与每个employeeID关联的TableA和TableB中插入一条记录 TableB是空的,所以我只是为每个empID运行一个INSERT语句,并且添加记录时没有任何问题 但是,一些EMPID可能在TableA中有现有记录,我需要在插入TableA之前检查这些记录 奇怪的是,当我执行这个SQR时,我得到了以下错误 (S

你好,Stack社区

在过去的几天里,我一直被一个相对简单的SQR更新所困扰

简而言之,ProcessProcessMain选择COMPANY='ABC'的所有员工,然后我需要在与每个employeeID关联的TableA和TableB中插入一条记录

TableB是空的,所以我只是为每个empID运行一个INSERT语句,并且添加记录时没有任何问题

但是,一些EMPID可能在TableA中有现有记录,我需要在插入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

在程序Insert TABLE中,记录A.Emplid需要位于第1列


在过程插入表中测试类似过程时,我遇到了相同的错误。记录a.Emplid需要在第1列中


我在测试一个类似的程序时遇到了同样的错误

我找到了答案。。。我知道不熟悉SQR语法是一个愚蠢的错误

我没有在SELECT区域内缩进“LET”语句。现在我知道只有SQL语句可以出现在第一列中

我还学到了另一个编码课程,这是正确的语法:

begin-select
A.EMPLID
    let $found = 'Y'
FROM TableA A
WHERE A.EMPLID=&J.EMPLID
AND A.PLAN_TYPE='P1234'
end-select

我找到了答案。。。我知道不熟悉SQR语法是一个愚蠢的错误

我没有在SELECT区域内缩进“LET”语句。现在我知道只有SQL语句可以出现在第一列中

我还学到了另一个编码课程,这是正确的语法:

begin-select
A.EMPLID
    let $found = 'Y'
FROM TableA A
WHERE A.EMPLID=&J.EMPLID
AND A.PLAN_TYPE='P1234'
end-select

您说这是伪代码——若它是真代码,那个么SQR在第1列中的do Insert TableA记录和do Insert TableB记录会有问题。这接近真实代码吗?A.EMPLID在过程Insert TABLE中的begin select语句中记录应位于第1列。有什么方法可以看到真实代码的部分吗?您说这是伪代码-如果它是真实代码,SQR会对第1列中的do Insert TableA记录和do Insert TableB记录产生问题。这接近真实代码吗?A.EMPLID在过程Insert TABLE中的begin select语句中记录应位于第1列。有什么方法可以看到真实代码的某些部分吗?