• The Four Hundred
  • Subscribe
  • Media Kit
  • Contributors
  • About Us
  • Contact
Menu
  • The Four Hundred
  • Subscribe
  • Media Kit
  • Contributors
  • About Us
  • Contact
  • Fetch a Variable Number of Records with SQL

    June 15, 2005 Hey, Ted

    If you want to use a variable for the number of rows to fetch in an SQL query, there is an alternative to the FETCH FIRST n ROWS technique you presented recently in Four Hundred Guru. Here is some code from an SQLRPGLE program shell I have used since V5R1. It uses a cursor instead of placing the number of rows directly into the SELECT statement.

    c/Exec SQL                                         
    c+ Fetch from C1 for :NbrRows rows into :RtnDtaSet 
    c/End-Exec
    

    –Rick

    Rick’s comment is in response to the last paragraph of the issue he refers to. His idea is to use a multi-row fetch, which requires that a structure of some sort (depending on the language) be defined to receive the data. In RPG, the data is placed into a multiple-occurrence data structure.

    Here’s another example that is a tad more complete. I have omitted the error-checking logic. The FETCH retrieves the number of rows specified by the first parameter.

    Fqsysprt   o    f  132        printer               
                                                        
    D CustData        ds                  occurs(12)    
    D  CustNumber                    6  0               
    D  CustName                     12                  
                                                        
    D Rows            s              3p 0               
    D Ndx             s              3p 0               
                                                        
    C     *entry        plist                           
    C                   parm                    Rows    
                                                        
    C/exec sql                                          
    C+           declare Customers cursor for           
    C+             select cusnum, lstnam || ' ' || init 
    C+               from qiws/qcustcdt                 
    C/end-exec                                          
    C/exec sql                                          
    C+           open Customers                         
    C/end-exec                                          
    C/exec sql                                          
    C+           fetch Customers for :Rows Rows         
    C+             into :CustData                       
    C/end-exec                                     
    C                   for       ndx = 1 to Rows  
    C     ndx           occur     CustData         
    C                   except    PLine            
    C                   endfor                     
    C/exec sql                                     
    C+           close Customers                   
    C/end-exec                                     
    C                   eval      *inlr = *on      
    Oqsysprt   e            pline       1          
    O                       Ndx           4        
    O                       CustNumber       +   1 
    O                       CustName         +   1 
    

    After the FETCH retrieves the number of rows indicated by the ROWS variable, a simple loop lists the retrieved records.

    –Ted

    RELATED STORY

    SQL Can Return One or a Few Records


    Share this:

    • Reddit
    • Facebook
    • LinkedIn
    • Twitter
    • Email

    Tags:

    Sponsored by
    Midrange Dynamics North America

    Git up to speed with MDChange!

    Whether you are managing large Git repositories for IBM i applications or you’re orchestrating smaller repositories, Midrange Dynamics has solutions to boost Git performance for IBM i.

    Git workflow in MDChange is specifically designed for IBM i, optimizing repository management, testing, and deployments for greater productivity, flexibility, and scalability. MDChange supercharges performance for GitHub, GitLab, Bitbucket, and Azure Repos.

    Learn More.

    Share this:

    • Reddit
    • Facebook
    • LinkedIn
    • Twitter
    • Email

    Now Solutions Brings HR App to DB2 Oracle Gives J.D. Edwards World Shops Something to Cheer About

    Leave a Reply Cancel reply

Volume 5, Number 23 -- June 15, 2005
THIS ISSUE
SPONSORED BY:

T.L. Ashford
iTera
WorksRight Software

Table of Contents

  • Query Active Directory from the iSeries
  • Fetch a Variable Number of Records with SQL
  • Admin Alert: A Quick Audit of Your IPL Parameters

Content archive

  • The Four Hundred
  • Four Hundred Stuff
  • Four Hundred Guru

Recent Posts

  • What You Will Find In IBM i 7.6 TR1 and IBM i 7.5 TR7
  • Three Things For IBM i Shops To Consider About DevSecOps
  • Big Blue Converges IBM i RPG And System Z COBOL Code Assistants Into “Project Bob”
  • As I See It: Retirement Challenges
  • IBM i PTF Guide, Volume 27, Number 41
  • Stacking Up Power11 Entry Server Performance To Older Iron
  • Big Blue Boosts IBM i Support In Instana, Adds Tracing
  • It Is Time To Tell Us What You Are Thinking And Doing
  • IBM i PTF Guide, Volume 27, Number 40
  • The GenAI Boom Is Only Slightly Louder Than The Dot Com Boom

Subscribe

To get news from IT Jungle sent to your inbox every week, subscribe to our newsletter.

Pages

  • About Us
  • Contact
  • Contributors
  • Four Hundred Monitor
  • IBM i PTF Guide
  • Media Kit
  • Subscribe

Search

Copyright © 2025 IT Jungle