【发布时间】:2018-08-10 17:37:38
【问题描述】:
当我在网络上搜索我的文本框时,如果没有结果,我想通知用户。我正在尝试使用 SQLCODE 保留字段,但它不起作用。当我运行调试器时,它总是设置为 000。我没有收到错误消息。
我做了一些研究,我认为您需要将保留字段添加到存储过程中。我做到了。我不确定我做错了什么。
存储过程:
drop procedure BPCSO/TEST_MB
create procedure BPCSO/TEST_MB
(
InOut DEC(3,0),
InOut DEC(3,0),
In CHAR(30),
In DEC(3,0),
Out CHAR(02)
)
language rpgle
parameter style general
not deterministic
READS SQL DATA
result sets 1
external name 'BPCSO/PUR027WS(PUR027)'
模块:
**FREE
// RFC Main Grid
CTL-OPT NOMAIN OPTION (*SRCSTMT : *NODEBUGIO);
DCL-PROC PUR027 EXPORT;
DCL-PI PUR027 EXTPROC(*DCLCASE);
StartingRow PACKED(3:0);
NbrOfRows PACKED(3:0);
Search CHAR(30);
SQLCODE PACKED(3:0);
RSL CHAR(2);
END-PI;
IF Search = '';
EXEC SQL Declare RSCURSOR cursor for
SELECT *
FROM CDPL03
ORDER BY CDEPT, CDESC
OFFSET (:StartingRow - 1) * :NbrOfRows ROWS
FETCH NEXT :NbrOfRows ROWS ONLY;
EXEC SQL Open RSCURSOR;
EXEC SQL SET RESULT SETS Cursor RSCURSOR;
ELSE;
EXEC SQL Declare RSCURSOR2 cursor for
SELECT *
FROM CDPL03
WHERE CDESC LIKE '%' concat trim(:Search) concat '%' AND
CDEPT LIKE '%' concat trim(:Search) concat '%'
ORDER BY CDESC, CDEPT
OFFSET (:StartingRow - 1) * :NbrOfRows ROWS
FETCH NEXT :NbrOfRows ROWS ONLY;
EXEC SQL Open RSCURSOR2;
EXEC SQL SET RESULT SETS Cursor RSCURSOR2;
ENDIF;
// Validate for SQL errors
IF SQLCODE = 0;
RSL = '00';
ELSEIF SQLCODE > 0;
RSL = '10';
ELSEIF SQLCODE < 0;
RSL = '20';
ENDIF;
//EXEC SQL SELECT COUNT(*)
// INTO :RowCount
// FROM CDPL03;
RETURN;
END-PROC PUR027;
// To create the service program:
// CRTSRVPGM SRVPGM(BPCSO/PUR027WS)
// MODULE(BPCSO/PUR027W)
// SRCFILE(BPCSS/PURBNDF) SRCMBR(PUR027WB)
【问题讨论】:
-
谢谢大家。得到结果后,我处理了它,并且效果很好。 JMarkMurphy,Player1 第一个回答,我认为标记为回答才公平。对不起。感谢您抽出宝贵时间再次回答我的问题。
标签: sql ibm-midrange db2-400 rpgle