在最近的一次采访中,有人问我,当使用INSERT语句向文件插入数据时如何获得数据计数,我告诉他我们可以稍后使用count语句来获得计数,但他坚持说我们可以在执行INSERT语句时获得计数。我真的很想知道,当我们在SQLRPGLE中执行插入语句时,我们能得到数据计数吗?如果是,那么我真的很想知道答案。
您有两个选择。
- SQL通信区
SQLERRD (3)
对于CONNECT For状态语句,SQLERRD(3)包含信息连接状态。有关更多信息,请参阅CONNECT (type 2)信息。对于INSERT、MERGE、UPDATE、REFRESH和DELETE,显示受影响的行数。
对于TRUNCATE语句,该值为-1。
对于FETCH语句,SQLERRD(3)包含取到的行数。
对于PREPARE语句,包含估计的行数选中。如果行数大于2 147 483 647,则为2返回147 483 647
使用
exec SQL insert ...;
recCnt = sqlErrD(3);
- GET诊断语句
ROW_COUNT
标识与前一个关联的行数已执行的SQL语句。如果前面的SQL语句是DELETE、INSERT、REFRESH或UPDATE语句,ROW_COUNT标识该语句删除、插入或更新的行数。排除受触发器或引用完整性影响的行约束。如果前面的SQL语句是MERGE语句,ROW_COUNT表示删除、插入和删除的行总数更新的声明,不包括行受到触发或者引用完整性约束。如果前面的SQL语句为对于多行获取,ROW_COUNT标识获取的行数。否则,返回值为0。
使用
exec SQL insert ...;
exec SQL GET DIAGNOSTICS :recCnt = ROW_COUNT;