che tipi di campi sono codice_prodotto e prezzo_riv ?
che tipi di campi sono codice_prodotto e prezzo_riv ?
codice_prodotto e' varchar
prezzo_riv e' money
Il fumo fa male a te e agli altri.
Rispettate chi non vuole respirare il fumo passivo.
devi usare un tipo solo, quindi uno dei due va castato. direi il prezzo a varchar
puoi dirmi come posso fare a "castare" nella sintassi nella sp ?
grazie
Il fumo fa male a te e agli altri.
Rispettate chi non vuole respirare il fumo passivo.
se lavori con le SP di sql, una cast la devi saper fare, ciccio!
ho usato varchar(50) come esempio: usa la lunghezza di codice_prodotto.codice:CASE WHEN @ordinamento=1 THEN codice_prodotto WHEN @ordinamento=3 THEN CAST(prezzo_riv AS VARCHAR(50)) ELSE Null END ASC,
te ne ho fatta una, l'altra te la fai da solo, okkei?
![]()
diciamo che ho usato questa qui ma non ci lavoro su spesso...
anzi e' l'unica che ho fatto e non mi e' mai servito modificarla...
vedo che non da' errori di sintassi, ti ringrazio !!!
spero pero' che poi convertendo in varchar un money, non ordini in questo modo crescente:
23
4
56,57
670,67
80
9000
Il fumo fa male a te e agli altri.
Rispettate chi non vuole respirare il fumo passivo.
per essere l'unica volta, ti sei andato a scegliere un argomento tosto!Originariamente inviato da billy1
diciamo che ho usato questa qui ma non ci lavoro su spesso...
anzi e' l'unica che ho fatto e non mi e' mai servito modificarla...VVoVe:
si infatti l'ho utilizzata anni fa, ho visto sul web un'esempio e l'ho adattata, ma non sono esperto...
tutorial in italiano ne conosci ?
Il fumo fa male a te e agli altri.
Rispettate chi non vuole respirare il fumo passivo.
Ciao intervengo nella vostra discussione,
se non si vogliono usare troppi CASE o simili si possono creare delle query dinamiche se la versione di SQL Server che si usa è dal 2000 in su.
La tua procedura potrebbe diventare così :
Potrei aver fatto casino soprattutto con le virgolette , ma il concetto è quello.codice:CREATE PROCEDURE codici /* in imput arriva la figura, restituisce tutti i valori associati alla figura. */ @figura varchar(50) , @ordinamento varchar(50) AS DECLARE @SQL nvarchar(4000) SET @SQL = 'SELECT b.codice_prodotto, b.prezzo_riv, b.descrizione_breve, b.descrizione_estesa FROM articoli b WHERE b.fig = ''' + Replace(@figura,'''','''''') + ''' and b.on_line=''yes''' CASE WHEN @ordinamento=1 THEN SET @SQL = @SQL + ' order by codice_prodotto ASC' WHEN @ordinamento=3 THEN SET @SQL = @SQL + ' order by prezzo_riv ASC' WHEN @ordinamento=2 THEN SET @SQL = @SQL + ' order by codice_prodotto DESC' WHEN @ordinamento=4 THEN SET @SQL = @SQL + ' order by prezzo_riv DESC' END --Esecuzione della query EXEC sp_executesql @strSQL GO
Ciao![]()
mi da' degli errori di sintassi :
error 156
incorrect syntax neat the keyword 'case'
incorrect syntax neat the keyword 'when'
incorrect syntax neat the keyword 'when'
incorrect syntax neat the keyword 'when'
incorrect syntax neat the keyword 'when'
incorrect syntax neat the keyword 'end'
must declase the variable @strSQL
ecco il codice :
codice:CREATE PROCEDURE codici /* in input arriva la figura, restituisce tutti i valori associati alla figura. */ @figura varchar(50) , @ordinamento varchar(50) AS DECLARE @SQL nvarchar(4000) SET @SQL = 'SELECT b.codice_prodotto, b.prezzo_riv, b.descrizione_breve, b.descrizione_estesa FROM articoli b WHERE b.fig = ''' + Replace(@figura,'''','''''') + ''' and b.on_line=''yes''' CASE WHEN @ordinamento=1 THEN SET @SQL = @SQL + 'order by codice_prodotto ASC' WHEN @ordinamento=3 THEN SET @SQL = @SQL + ' order by prezzo_riv ASC' WHEN @ordinamento=2 THEN SET @SQL = @SQL + ' order by codice_prodotto DESC' WHEN @ordinamento=4 THEN SET @SQL = @SQL + ' order by prezzo_riv DESC' END --Esecuzione della query EXEC sp_executesql @strSQL GO
Il fumo fa male a te e agli altri.
Rispettate chi non vuole respirare il fumo passivo.