簡體   English   中英

在BEGIN-SELECT語句上出現運行時錯誤的SQR過程

[英]SQR procedure with run-time error on BEGIN-SELECT statement

您好Stack社區,

在過去的幾天里,我一直停留在最初認為相對簡單的SQR更新上。

簡而言之,過程Process-Main將選擇COMPANY ='ABC'的所有雇員,然后我需要在與每個employeeID相關聯的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

我找到了答案...我知道這是一個愚蠢的錯誤,因為它不熟悉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

在過程Insert-TableA-Record中,A.Emplid必須位於第1列中

測試類似的程序時出現相同的錯誤

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM