当前位置:  开发笔记 > 数据库 > 正文

如何使用嵌入式SQL迭代RPG(LE)中的一组记录?

如何解决《如何使用嵌入式SQL迭代RPG(LE)中的一组记录?》经验,为你挑选了2个好方法。

如何使用嵌入式SQL迭代RPG(LE)中的一组记录?



1> Mike Wills..:

通常我会创建一个游标并获取每条记录.

   //***********************************************************************
   // Main - Main Processing Routine
   begsr Main;

     exsr BldSqlStmt;

     if OpenSqlCursor() = SQL_SUCCESS;

       dow FetchNextRow() = SQL_SUCCESS;
         exsr ProcessRow;
       enddo;

       if sqlStt = SQL_NO_MORE_ROWS;
         CloseSqlCursor();
       endif;

     endif;

     CloseSqlCursor();

   endsr;    // Main 

我在网站上的帖子中添加了更多详细信息.



2> James R. Per..:

正如迈克所说,迭代光标是最好的解决方案.我会添加以提供更好的性能,您可能希望获取一个数组来处理块而不是一次处理一个记录.

例:

  EXEC SQL                                                          
  OPEN order_history;                                             

  // Set the length                                                 
  len = %elem(results);                                             

  // Loop through all the results                                   
  dow (SqlState = Sql_Success);                                     
    EXEC SQL                                                        
      FETCH FROM order_history FOR :len ROWS INTO :results;         
    if (SQLER3 <> *zeros);                                                 
      for i = 1 to SQLER3 by 1;        
        // Load the output             
        eval-corr output = results(i); 
        // Do something 
      endfor;                          
    endif;                             
  enddo;                               

HTH,James R. Perkins

推荐阅读
乐韵答题
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有