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