quella che segue è una stored procedure che deve riempire una tabella temporanea con dei dati
che dovrò poi stampare.
In questa stored ho 2 problemi:
1. la variabile @mioFiltro viene passata alla stored da vb e fin qui tutto ok. il problema mi si pone
nel momento in cui vado ad eseguire la select per riempire il cursore: non riesco a passare
alla clausola WHERE la mia variabile.
2. una volta dichiarato il cursore, la select che segue
presumo riempia il cursore stesso con il risultato della select
stessa, quindi con l'istruzione OPEN mioCursore io apro un cursore
già pieno. Come faccio a leggere i campi del cursore? con i recordset
si usa scrivere ad esempio mioRS("TitoloPostale"), ma qui come faccio?
codice:CREATE PROCEDURE sp_CreaElencoPerStampaBuste @mioFiltro varchar(100) AS SET @mioFiltro = @mioFiltro + ' AND indIndirizzo > 0' /* riempio il cursore con il risultato della select sulla tbnominativi*/ DECLARE @TitoloPostale varchar(10), @Nominativo varchar(100), @IndirizzoCompleto varchar(200) DECLARE @miaCittà varchar(20), @miaProvincia varchar(3), @mioStato varchar(20) DECLARE mioCursore CURSOR FOR SELECT IDNominativo, TitoloPostale, Titolo, LTRIM(RTRIM(ISNULL(Cognome,' ') + ' ' + ISNULL(Nome,' ') + ' ' + ISNULL(Posizione,' '))) AS Nominativo, IDSocietà, Indirizzo1, Cap1, IDCittà1, IDProvincia1, IDStato1, Indirizzo2, Cap2, IDCittà2, IDProvincia2, IDStato2, indIndirizzo FROM TBNominativi INNER JOIN TBTitoli ON TBNominativi.IDTitolo = TBTitoli.IDTitolo INNER JOIN TBTitoliPostali ON TBNominativi.IDTitoloPostale = TBTitoliPostali.IDTitoloPostale WHERE + ' ' + @mioFiltro OPEN mioCursore FETCH NEXT FROM mioCursore WHILE @@FETCH_STATUS = 0 BEGIN /*Eseguo la select su indIndirizzo per sapere quale indirizzo devo utilizzare nella stampa*/ SET @TitoloPostale = mioCursore('TitoloPostale') SET @Nominativo = LTRIM(RTRIM(mioCursore('Titolo') + ' ' + mioCursore('Nominativo'))) if mioCursore('indIndirizzo') = 1 BEGIN Select @miaCittà = Città FROM TBCittà WHERE IDCittà = mioCursore('IDCittà1') Select @miaProvincia = Provincia FROM TBProvincie WHERE IDProvincia = mioCursore('IDProvincia1') Select @mioStato = Stato FROM TBStati WHERE IDStato = mioCursore('IDStato1') SET @IndirizzoCompleto = mioCursore('Indirizzo1') + Char(13) + mioCursore('Cap1') END else if mioCursore.Field('indIndirizzo') = 2 BEGIN Select @miaCittà = Città FROM TBCittà WHERE IDCittà = mioCursore('IDCittà1') Select @miaProvincia = Provincia FROM TBProvincie WHERE IDProvincia = mioCursore('IDProvincia2') Select @mioStato = Stato FROM TBStati WHERE IDStato = mioCursore('IDStato2') SET @IndirizzoCompleto = mioCursore('Indirizzo2') END SET @IndirizzoCompleto = @IndirizzoCompleto + Char(13) + @miaCittà + '(' + @miaProvincia + ')' if UPPER(@mioStato) <> 'ITALIA' SET @IndirizzoCompleto = @IndirizzoCompleto + Char(13) + @mioStato -- Inserisco i risultati nella tabella TBIndirizzoPostali INSERT TBIndirizziPostali (TitoloPostale,Nominativo,IndirizzoCompleto) VALUES (@TitoloPostale,@Nominativo,@IndirizzoCompleto) FETCH NEXT FROM mioCursore END CLOSE mioCursore DEALLOCATE mioCursore GO


Rispondi quotando