当我们在SQLRPGLE中向文件插入数据时,如何在同一SQL语句中获得记录数的计数



在最近的一次采访中,有人问我,当使用INSERT语句向文件插入数据时如何获得数据计数,我告诉他我们可以稍后使用count语句来获得计数,但他坚持说我们可以在执行INSERT语句时获得计数。我真的很想知道,当我们在SQLRPGLE中执行插入语句时,我们能得到数据计数吗?如果是,那么我真的很想知道答案。

您有两个选择。

  1. 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);
  1. 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;

最新更新