[英]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.