Hystrix


Il mondo è la totalità dei fatti non delle cose.
Home Blogs | Home | Login | Contact | My Profile | RSS | About | Cerca

Calcolo di Lifo e Fifo con Sql Server

/*In ambito gestionale una delle questioni fondamentali da affrontare in ambito statistico èquella della valorizzazione del magazzino.Affrontando questa questione è facile rendersi conto che il concetto di valorizzazione nonè univoco, consideriamo infatti subito il seguente esempio:In magazzino abbiamo un prodotto X che abbiamo acquistato a 
Leggi tutto il post...
Categoria: SQL Server
martedì, 15 gen 2008 Ore. 12.11

Scrivi un commento

Nome:
Blog:
E-Mail:
(l'indirizzo e-mail non verrà pubblicato, consente di essere avvertiti quando arrivano nuovi commenti a questo Post)
Codice:
Corpo:
Cookie:

Commenti

Autore: NinjaCrossInviato il: 22 set 2010 - 18.02
Ottimo articolo !
Un vero peccato che, per come sono strutturate le funzioni, in casi reali di movimento magazzino si incorre facilmente in errori dovuti alla profondità massima di ricorsione (limitata a 100, in sql 2005/2008).
Nel mio specifico caso, popolando la tabella t_Movimenti con 1.000.000 di records e 20.000 articoli (una situazione abbastanza normale per qualsiasi ferramenta, dopo 5-6 anni di attività), l'errore che si sviluppa è il seguente:
"Istruzione interrotta. Numero massimo di ricorsioni 100 esaurito prima del completamento dell'istruzione."
Qualche idea per risolvere il problema ?

Autore: MarcInviato il: 22 set 2010 - 19.03
Ciao,
devi aggiungere la option maxrecursion 0, alla maniera di:

with x as(
select n=1
union all
select n+1 from x
where n<200
)
select * from x
option (maxrecursion 0)

Autore: NinjaCrossInviato il: 23 set 2010 - 15.04
Ti ringrazion molto per il consiglio, è funzionato alla perfezione !
Un'altra domanda: a tuo parere questo approccio è ottimale in termini di prestazioni, oppure ci sono altre vie per ottenere tempi di esecuzione migliori, pur considerando una struttura tabellare del tutto identica a quella da te proposta ?
A titolod'esempio, considera che il nostro server (core duo 2, con 4GB di RAM, Sql 2005) impiega circa 15 minuti ad eseguire la FIFO su 1.000.000 di records, rappresentanti nel loro totale circa 1400 articoli univoci (con una media quindi di circa 700 movimenti per articolo) .
Decisamente troppo, per il nostro utente medio...
Grazie in anticipo per qualsiasi consiglio mi saprai dare :)
Copyright © 2002-2007 - Blogs 2.0
dotNetHell.it | Home Page Blogs
ASP.NET 2.0 Windows 2003