RPG exec sql 只工作一次
RPG exec sql works only once
我在 RPG IV 自由格式中编写程序时遇到了问题。我正在尝试执行 sql 语句:
dcl-proc getRecord;
dcl-pi *N int(5) end-pi;
dcl-s rec int(5) inz(0);
exec sql
select max(SCORE) into :rec from SNK_HISC;
return rec;
END-PROC;
编译后只运行一次。也许我应该重置一些指标或 sql 标志?在程序结束时我使用:
*inlr = *on;
return;
程序调用的地方:
exfmt BACK;
exfmt INFO;
inital();
dow run and alive;
write MAINBOARD;
READ(E) AKE_DSP;
run = FKeyListener();
alive = goForward();
ENDDO;
LSCORE = points;
if points > getRecord();
LRECORD = 'NEW RECORD!';
exec sql
insert into AKE_HISC( USID , SCORE) VALUES( :userID , :points);
ENDIF;
exfmt ENDING;
*inlr = *on;
return;
在此过程中:
dcl-proc inital;
snake(1).x = 5;
snake(2).x = 5;
snake(3).x = 5;
snake(1).y = 5;
snake(2).y = 6;
snake(3).y = 7;
direction.x = 1;
direction.y = 0;
SCORE = points;
RECORD = getRecord();
genSnack();
refresh();
END-PROC;
我 运行 使用这个 CL 程序编程:
PGM
MONMSG MSGID(CPF0000 MCH0000) EXEC(GOTO CMDLBL(END))
OVRDSPF FILE(AKE_DSP) DEV(*REQUESTER) WAITRCD(1)
CALL PGM(AKE_S)
END:
DLTOVR FILE(*ALL)
MONMSG MSGID(CPF0000)
ENDPGM
问题不在于 sql 查询,而在于它所在的位置。我删除了过程 getRecord() 并使 rec 成为全局变量,并且 sql 查询被放置在主循环中,仅此而已。
我在 RPG IV 自由格式中编写程序时遇到了问题。我正在尝试执行 sql 语句:
dcl-proc getRecord;
dcl-pi *N int(5) end-pi;
dcl-s rec int(5) inz(0);
exec sql
select max(SCORE) into :rec from SNK_HISC;
return rec;
END-PROC;
编译后只运行一次。也许我应该重置一些指标或 sql 标志?在程序结束时我使用:
*inlr = *on;
return;
程序调用的地方:
exfmt BACK;
exfmt INFO;
inital();
dow run and alive;
write MAINBOARD;
READ(E) AKE_DSP;
run = FKeyListener();
alive = goForward();
ENDDO;
LSCORE = points;
if points > getRecord();
LRECORD = 'NEW RECORD!';
exec sql
insert into AKE_HISC( USID , SCORE) VALUES( :userID , :points);
ENDIF;
exfmt ENDING;
*inlr = *on;
return;
在此过程中:
dcl-proc inital;
snake(1).x = 5;
snake(2).x = 5;
snake(3).x = 5;
snake(1).y = 5;
snake(2).y = 6;
snake(3).y = 7;
direction.x = 1;
direction.y = 0;
SCORE = points;
RECORD = getRecord();
genSnack();
refresh();
END-PROC;
我 运行 使用这个 CL 程序编程:
PGM
MONMSG MSGID(CPF0000 MCH0000) EXEC(GOTO CMDLBL(END))
OVRDSPF FILE(AKE_DSP) DEV(*REQUESTER) WAITRCD(1)
CALL PGM(AKE_S)
END:
DLTOVR FILE(*ALL)
MONMSG MSGID(CPF0000)
ENDPGM
问题不在于 sql 查询,而在于它所在的位置。我删除了过程 getRecord() 并使 rec 成为全局变量,并且 sql 查询被放置在主循环中,仅此而已。