At line 1 added 278 lines |
%%(display:none) |
{{{ |
WikiUp |
}}} |
/% |
[{TableOfContents }]\\ |
!!! OBIETTIVO\\ |
Restituisce in formato alfanumerico i risultati di una istruzione SQL Select tramite un cursore |
con allocazione dinamica della SQLDA |
|
!!! FUNZIONI E METODI\\ |
|
!! CLOSE - Chiude il cursore\\ |
%%quote |
| C EVAL £SQLD_FUNFU='CLOSE' |
| C EVAL £SQLD_FUNME=*BLANKS |
| C EXSR £SQLD |
/% |
---- |
|
!! OPEN - Prepara lo statement, apre il cursore, dimensiona la SQLDA\\ |
__Prima di eseguire la funzione 'OPEN' è necessario impostare la variabile £SQLDString con l'istruzione SELECT.__ |
|
! NAM - recuperando i nomi di sistema dei campi in £SQLDCName\\ |
%%quote |
| C EVAL £SQLDString=SelectSQL |
| * numero di righe per istruzione OPTIMIZE (se 0 assume 5000) |
| C EVAL £SQLDRows=n |
| C EVAL £SQLD_FUNFU='OPEN' |
| C EVAL £SQLD_FUNME='NAM' |
| C EXSR £SQLD |
/% |
---- |
! NAMLAB - recuperando i nomi di sistema dei campi in £SQLDCName e le intestazioni in £SQLDCLabel\\ |
__ ATTENZIONE: COMPORTA UN'ALLOCAZIONE DI MEMORIA TRIPLA__ |
%%quote |
| C EVAL £SQLDString=SelectSQL |
| C EVAL £SQLD_FUNFU='OPEN' |
| C EVAL £SQLD_FUNME='NAMLAB' |
| C EXSR £SQLD |
/% |
---- |
! LAB - recuperando le intestazioni dei campi in £SQLDCName\\ |
%%quote |
| C EVAL £SQLDString=SelectSQL |
| C EVAL £SQLD_FUNFU='OPEN' |
| C EVAL £SQLD_FUNME='LAB' |
| C EXSR £SQLD |
/% |
---- |
|
!! POS - Posizionamento cursore\\ |
! NEXT - al record successivo\\ |
%%quote |
| C EVAL £SQLD_FUNFU='POS' |
| C EVAL £SQLD_FUNME='NEXT' |
| C EXSR £SQLD |
/% |
---- |
! PRIOR - al record precedente\\ |
%%quote |
| C EVAL £SQLD_FUNFU='POS' |
| C EVAL £SQLD_FUNME='PRIOR' |
| C EXSR £SQLD |
/% |
---- |
! FIRST - al primo record\\ |
%%quote |
| C EVAL £SQLD_FUNFU='POS' |
| C EVAL £SQLD_FUNME='FIRST' |
| C EXSR £SQLD |
/% |
---- |
! LAST - all'ultimo record\\ |
%%quote |
| C EVAL £SQLD_FUNFU='POS' |
| C EVAL £SQLD_FUNME='LAST' |
| C EXSR £SQLD |
/% |
---- |
! BEFORE - a BOF\\ |
%%quote |
| C EVAL £SQLD_FUNFU='POS' |
| C EVAL £SQLD_FUNME='BEFORE' |
| C EXSR £SQLD |
/% |
---- |
! AFTER - a EOF\\ |
%%quote |
| C EVAL £SQLD_FUNFU='POS' |
| C EVAL £SQLD_FUNME='AFTER' |
| C EXSR £SQLD |
/% |
---- |
! RELATIVE - relativo al record corrente\\ |
__(posizionamento relativo al record corrente di +n o -n in base alla variabile £SQLDRows)__ |
%%quote |
| C EVAL £SQLRel=n |
| C EVAL £SQLD_FUNFU='POS' |
| C EVAL £SQLD_FUNME='RELATIVE' |
| C EXSR £SQLD |
/% |
---- |
|
!! READF - Recupera il Valore della colonna\\ |
%%quote |
| C EVAL £SQLD_FUNFU='READF' |
| C EVAL £SQLD_FUNME=' ' |
| C EXSR £SQLD |
/% |
---- |
|
!! FINDC - Recupera la definizione della colonna\\ |
! NAM - Ricerca dal nome della colonna in £SQLDCName\\ |
%%quote |
| C EVAL £SQLDCName=NomeCampo |
| C EVAL £SQLD_FUNFU='FINDC' |
| C EVAL £SQLD_FUNME='NAM' |
| C EXSR £SQLD |
/% |
---- |
! LET - Posizionamento\\ |
%%quote |
| C EVAL £SQLD_FUNFU='FINDC' |
| C EVAL £SQLD_FUNME='POS' |
| C EXSR £SQLD |
/% |
---- |
! LET - Lettura\\ |
%%quote |
| * ciclo sui campi |
| C DO *HIVAL |
| C EVAL £SQLD_FUNFU='FINDC' |
| C EVAL £SQLD_FUNME='LET' |
| C EXSR £SQLD |
| C IF £SQLD35=*ON |
| C LEAVE |
| C ENDIF |
| C ENDDO |
/% |
---- |
|
!! RETREC - Restituisce in £SQLDString l'intero record\\ |
! G18 - con i campi separati da ' '\\ |
%%quote |
| C EVAL £SQLD_FUNFU='RETREC' |
| C EVAL £SQLD_FUNME='G18' |
| C EXSR £SQLD |
/% |
---- |
! MAT - con i campi separati da '|'\\ |
%%quote |
| C EVAL £SQLD_FUNFU='RETREC' |
| C EVAL £SQLD_FUNME='MAT' |
| C EXSR £SQLD |
/% |
---- |
! CSV - con i campi separati da ';'\\ |
%%quote |
| C EVAL £SQLD_FUNFU='RETREC' |
| C EVAL £SQLD_FUNME='CSV' |
| C EXSR £SQLD |
/% |
---- |
|
!! RETINT - Restituisce in £SQLDString le intestazioni\\ |
! G18 - con i campi separati da ' '\\ |
%%quote |
| C EVAL £SQLD_FUNFU='RETINT' |
| C EVAL £SQLD_FUNME='G18' |
| C EXSR £SQLD |
/% |
---- |
! CSV - con i campi separati da ';'\\ |
%%quote |
| C EVAL £SQLD_FUNFU='RETINT' |
| C EVAL £SQLD_FUNME='CSV' |
| C EXSR £SQLD |
/% |
---- |
|
!!! TIPI DI DATI SUPPORTATI\\ |
- __Tipo dato RPG__ | __Tipo dato SQL__ | __Tipo dato £IR1__\\ |
- A | CHAR | A\\ |
- A (VARYING) | VARCHAR | A\\ |
- 05I 0 | SMALLINT | B\\ |
- 10I 0 | INTEGER | B\\ |
- 20I 0 | BIGINT | B\\ |
- F | FLOAT | F\\ |
- D | DATE | L\\ |
- P | DECIMAL | P\\ |
- S | NUMERIC | S\\ |
- T | TIME | T\\ |
- Z | TIMESTAMP | Z\\ |
|
!!! VARIABILI\\ |
%%quote |
|L(PUN) |
|- Stringa istruzione SQL (in INPUT) |
|- Record restituito (in OUTPUT con funzione 'RETREC') |
|- Valore del campo restituito (in OUTPUT con funzione 'READF') |
/% |
---- |
D £SQLDString S 32766 VARYING |
********************************************************************\\ |
* DS INPUT/OUTPUT\\ |
D £SQLD_DS1 DS |
* INPUT |
D* numero in base al quale eseguire il fetch relative (con funzione 'RELATIVE') |
D* numero di righe per l'optimize su apertura cursore |
D £SQLDRows 30P 0 |
* OUTPUT con info campi (con funzione 'READF') |
D* nome colonna (con metodo 'NAM' o 'NAMLAB') o intestazione (con metodo 'LAB') |
D £SQLDCName 30 |
D* label (intestazione) colonna (con metodo 'NAMLAB') |
D £SQLDCLabel 30 |
D* tipo di dato del campo |
D £SQLDCDType 5I 0 |
D* lunghezza campo stringa |
D £SQLDCLen 5I 0 |
D* scala campo numerico (numero posizioni decimali) |
D £SQLDCScale 10I 0 |
D* precisione campo numerico |
D £SQLDCPrec 10I 0 |
D* indice della colonna corrente del record |
D £SQLDCurCol 7 0 |
D* numero totale delle colonne del record |
D £SQLDTotCol 7 0 |
D* tipo di dato del campo nel formato della £IR1AC |
D £SQLDCDTpIR 1 |
****************************************************************\\ |
* DS OUTPUT Info ERRORE\\ |
D £SQLD_ERROR DS |
* Indicatore di errore |
D £SQLD35 N |
* SQLCOD |
D £SQLDCOD 5I 0 |
* SQLERM |
D £SQLDERM 80 |
* %Status (per errori di allocazione di memoria) |
D £SQLDSTATUS 5S 0 |
* Variabili per errore non SQL |
D £SQLDVA 45 |
!!! ESEMPIO\\ |
%%quote |
| ESEGUIRE UNA LETTURA DEL BRARTI0F QUERY : SELECT * FROM BRARTI0F |
| C*APRO |
| C EVAL £SQLDString='SELECT * FROM BRARTI0F' |
| C EVAL £SQLD_FUNFU='OPEN' |
| C EVAL £SQLD_FUNME='NAM' |
| C EXSR £SQLD |
|1 C IF £SQLD35=*ON |
| C LEAVESR |
|1e C ENDIF |
| C*posizionamento |
| C EVAL £SQLD_FUNFU='POS' |
| C EVAL £SQLD_FUNME='NEXT' |
| C EXSR £SQLD |
|1 C IF £SQLD35=*ON |
| C LEAVESR |
|1e C ENDIF |
| C*lettura |
| C DO *HIVAL |
| C EVAL £SQLD_FUNFU='RETREC' |
| C EVAL £SQLD_FUNME='MAT' |
| C EXSR £SQLD |
|1 C IF £SQLD35=*ON |
| C LEAVE |
|1e C ENDIF |
| C* £SQLDString CONTIENE IL RISULTATO DELLA FETCH |
|1e C ENDDO |
| C*CHIUDO |
| C EVAL £SQLD_FUNFU='CLOSE' |
| C EVAL £SQLD_FUNME=*BLANKS |
| C EXSR £SQLD |
| C* LA FUNZIONE CLOSE CHIUDE IL CURSORE E PULISCE £SQLDString |
/% |
---- |