Cursore con l'esigenza di passare un valore aggiuntivo

giovedì 29 gennaio 2009 - 15.56

perla0279 Profilo | Senior Member

Ciao

avrei la necessità di costruire un cursore ma con una sintassi un pò particolare........ e non sò se è fattibile

Vi chiedo quindi un consiglio ed eventualmente il come si può realizzare........

Ho costruito un cursore che mi cerca un codice cliente all'interno di una TB.
Nel Fech ho inserito il @codcli,


A questo punto devo andare ad inserire all'interno delle tabelle una stringa che vado a creare che deve essere differenziata in testata (con una stringa negozio) e per i recor sucessivi (stringa dettaglio).
Quindi avro una stringa negozio per ogni @codcli che trovo nuovo e invece una stringa dettaglio per tutti i record sucessivi che presentano comunque il codcli ma che risulta uguale a quello precedente nel cursore.

io avevo pensato di fare cosi....... (ma non sono sicura che si possa fare dato che non mi viene fuori)

DECLARE @CodCli as INT
DECLARE @Cliente AS INT

Creo cursore

FETCH curs into @Cliente

WHILE @@FETCH_STATUS = 0
BEGIN
Faccio il confronto con il codice della riga di cursore sucessiva
IF @Cliente <> @Codcli

--inserisco testata NEGOZIO

ELSE
--inserisco riga di dettaglio

FETCH NEXT FROM curs INTO @Cliente
END

CLOSE curs
DEALLOCATE curs

Avrei cioè la necessità di poter ad ogni passaggio di cursore fare il confronto con il codice precedente...

Come posso fare?

paspan Profilo | Newbie

Ciao....
ora nn so se usi una stored o un trigger per gestire il cursore, cmq se usi la versione Sql Server 2005 o superiore io darei un'occhiata alla parte integration si SQL.....

puoi creare trigger o stored (CLR) cioè gestiti direttamente dal codice.
molto comoda...

saluti

perla0279 Profilo | Senior Member

Ciao
uso in effetti una store procedure.... il cursore è inserito li dentro, ma comunque non riesco a capire come gestire la cosa..

alx_81 Profilo | Guru

>Ciao
Ciao

>uso in effetti una store procedure.... il cursore è inserito
>li dentro, ma comunque non riesco a capire come gestire la cosa..
Scusa un secondo, ma da dove lanci questa stored procedure? Sembra quasi l'ordine di un cliente o la fatturazione dell'ordine evaso..
Spiega un po' la situazione reale. Evita sempre i cursori a meno che non siano VERAMENTE l'unica soluzione. Appesantiscono, e non di poco, il database server. Personalmente ritengo migliore effettuare il ciclo dall'applicazione e fare la stored procedure di insert diretta in tabella.

--

Alessandro Alpi | SQL Server MVP

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org

perla0279 Profilo | Senior Member

Si lo so che sarebbe meglio non creare un cursore ma il comando viene lanciato da una applicazione dove non ho il controllo (cioè un automatismo) quindi per avere il controllo della cosa sono costretta a fare cosi.

Devo creare una tabella dove inserisco dei valori andando a creare una stringa.
vado in join su più tabelle per fare questo.

La tabella è composta cosi:
Testata... con dati relativi al negozio
Descrizione... con dati relativi ad ogni vendita, dove vado a sommare dei valori per il calcolo

Ogni volta che trovo un codice cliente diverso devo inserire la testata e poi sotto inserire tutti i campi dettagli.

Le select sono distinte perchè i dati si trovano in tabelle diverse.

Io penso che sia l'unico modo il cursore, almeno per questo caso.

alx_81 Profilo | Guru

>Si lo so che sarebbe meglio non creare un cursore ma il comando
>viene lanciato da una applicazione dove non ho il controllo (cioè
>un automatismo) quindi per avere il controllo della cosa sono
>costretta a fare cosi.
Questo automatismo come chiama la tua stored procedure? Quali sono i parametri che ti passa?

>Devo creare una tabella dove inserisco dei valori andando a creare una stringa.
>vado in join su più tabelle per fare questo.
Quindi tramite una join ottieni una stringa? Formattata come?
>
>La tabella è composta cosi:
>Testata... con dati relativi al negozio
>Descrizione... con dati relativi ad ogni vendita, dove vado a
>sommare dei valori per il calcolo
Perciò una tabella con due colonne. E nella seconda metti la stringa risultante dalla join? Poi usi quella descrizione per effettuare dei calcoli?

>Ogni volta che trovo un codice cliente diverso devo inserire la testata e poi sotto inserire tutti i campi dettagli.
con "sotto" cosa intendi? Immagino tu abbia altre tabelle, magari una delle testate ed una dei dettagli di ogni testata, giusto?

>Le select sono distinte perchè i dati si trovano in tabelle diverse.
Quali select? Prima mi hai parlato di una join, ce ne sono altre?

>Io penso che sia l'unico modo il cursore, almeno per questo caso.
Purtroppo non ti so dire ancora nulla in merito, perchè proprio non capisco la situazione reale. Prova a rispondermi alle domande, perchè ancora non mi è chiaro il problema.
Ti chiedo scusa per le richieste, ma per capire bene ho bisogno di maggiori dettagli. Ciao!

--

Alessandro Alpi | SQL Server MVP

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org

perla0279 Profilo | Senior Member

Abbiamo dei processi server che chiamano store procedure, shell, ecc..
Non so dirti bene come funzionano perchè vengono gestiti da una azienda esterna.

La procedura in entrata chiede solo il numero della settimana da estrarre.



Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5