كيف يمكنني التكرار على مجموعة من السجلات في RPG(LE) مع SQL المضمن؟
-
02-07-2019 - |
سؤال
كيف يمكنني التكرار على مجموعة من السجلات في 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 ، جيمس ر.بيركنز
لا تنتمي إلى StackOverflow