Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
SQL Server 2000/2005/2008, Express, Access, MySQL, Oracle
Cursore con l'esigenza di passare un valore aggiuntivo
giovedì 29 gennaio 2009 - 15.56
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
perla0279
Profilo
| Senior Member
274
messaggi | Data Invio:
gio 29 gen 2009 - 15:56
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
7
messaggi | Data Invio:
gio 29 gen 2009 - 16:00
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
274
messaggi | Data Invio:
gio 29 gen 2009 - 16:49
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
8.814
messaggi | Data Invio:
gio 29 gen 2009 - 17:16
>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
274
messaggi | Data Invio:
gio 29 gen 2009 - 19:07
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
8.814
messaggi | Data Invio:
ven 30 gen 2009 - 00:57
>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
274
messaggi | Data Invio:
ven 30 gen 2009 - 08:22
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.
Torna su
Stanze Forum
Elenco Threads
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 !