كيف يمكنني التكرار على مجموعة من السجلات في RPG(LE) مع SQL المضمن؟

StackOverflow https://stackoverflow.com/questions/120422

سؤال

كيف يمكنني التكرار على مجموعة من السجلات في RPG(LE) مع SQL المضمن؟

هل كانت مفيدة؟

المحلول

عادةً ما أقوم بإنشاء مؤشر وإحضار كل سجل.

   //***********************************************************************
   // 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 

لقد أضفت المزيد من التفاصيل إلى هذه الإجابة في منشور على موقع الويب الخاص بي.

نصائح أخرى

كما قال مايك، التكرار فوق المؤشر هو الحل الأفضل.أود أن أضيف أنه لتوفير أداء أفضل قليلاً، قد ترغب في جلبه إلى مصفوفة لمعالجتها في كتل بدلاً من سجل واحد في كل مرة.

مثال:

  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 ، جيمس ر.بيركنز

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top