All'inizio anche io non avevo ben capito, poi ho guardato il codice generato e ho capito.
In pratica la select into variables:
1. apre un recordset
2. si posiziona sul primo elemento
3. legge i valori del recordset per valorizzare le variabili
4. chiude il recordset
Se usi la select into recordset, il codice generato per la query è lo stesso ma fa solo gli step 1 e 2. L'ho citata perchè aprendo il recordset puoi usare il metodo RecordCount del recordset per sapere quante righe ottieni.
La cosa interessante è che per valorizzare la variabile "found" della select into variables il codice generato usa proprio il metodo RecordCount
- Code: Select all
QV = MainFrm.ISI2DBObject.DBO().OpenRS(SQL);
if (!QV.EOF()) QV.MoveNext();
v_FOUND = (QV.RecordCount()!=0 ? IDVariant.TRUE : IDVariant.FALSE);
Si potrebbe chiedere a Programma se possono mettere una seconda variabile oltre a found che indica il numero di righe selezionate.
Tieni presente però che quando usi la select into variables e il filtro della select non garantisce un risultato univoco dovresti chiederti perchè ti va bene leggere solo i dati del primo record.
Un caso d'uso che a volte mi capita è quando leggo da una tabella in cui ho uno storico di istanze di uno stesso dato e magari prendo la più recente o la più vecchia facendo un order by. In questo caso so che potenzialmente la query selezionerà più righe ma so già che a me serve il dato preso dalla prima riga restituita.