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:
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.