∴   Mennyi-i-i?

             Ha tudni szeretnéd, hogy mennyi rekord felel meg a feltételednek...

2014.05.24. 16:38

Még junior programozóként kérdezgettem az "öregeket", hogy van-e arra lehetőség, hogy mondjuk programban megtudjuk, hogy az adott táblában mennyi rekord van, vagy hogy egy adott feltételnek mennyi felel meg.

"Nincs" jött a válasz, amibe akkor még belenyugodtam, elfogadtam, elhittem. Kár volt. Mert bizony lehet és erre mutatok most egy rövid programot, példaként.

A program SQL utasítást hajt végre és a megadott paramétereknek megfelelő rekordszámot adja vissza.

FIGYELEM!
A program típusa SQLRPGLE legyen! (A neve bármi lehet...)

 

CL0N01Factor1+++++++Opcode&ExtFactor2+++++++Result++++++++Len++D+HiLoEq

D                 DS                                                   
D  vRecCount              1     10S 0                                  
 *
 * ENTRY PARM LIST                                                     
C     *ENTRY        PLIST                                              
C                   PARM                    P#COUNT           8 0      
C                   PARM                    P#PTNK            8 0      
 *=====================================================================  
 *  PROGRAM START                                                   
 *=====================================================================  
 *                                                                     
C                   EXSR      GETCOUNTS                                
C                   EVAL      P#COUNT = vRecCount                       
C                   EVAL      *INLR = *ON                            
C                   RETURN                                           
 *                                                                   
 *=====================================================================
 *  GetCounts                                                    
 *======================================================================
C     GetCounts     BEGSR                                            
 *                                                                   
C/exec sql                                                           
C+  select COUNT(*) into :vRecCount             
C+  from   LIBRARY/SFILE
C+  where  SFPTNK =: P#PTNK and                  
C+         SFSYSD >= '2014-01-01' and SFCNTY = 'HU'
C/end-exec                                      
 *                                              
C                   ENDSR

A program paraméterként kap egy partnerkódot (P#PTNK), és azt a rekordszámot adja vissza a P#COUNT paraméterben, ahány rekord megfelel annak a feltételnek, ahol az SFPTNK = a paraméterben megkapott partnerkóddal ÉS a rendszerben rögzített dátuma nagyobb vagy egyenlő "2014-01-01"-nél ÉS az országkódja "HU".

Természetesen az utóbbi 2 adat is lehetne paraméterként beérkező, illetve akár több feltételt is vizsgálhatnánk.

 

A bejegyzés trackback címe:

https://as400programozas.blog.hu/api/trackback/id/tr426184686

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

Nincsenek hozzászólások.
süti beállítások módosítása