Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 22
  1. #1
    Utente di HTML.it L'avatar di billy1
    Registrato dal
    Jun 2001
    Messaggi
    549

    stored procedure : come passare un parametro x ordinare risultato stored procedure?

    stored procedure : come passare un parametro x ordinare risultato stored procedure?

    ciao

    vorrei passare un parametro ad una stored procedure, in modo da ordinare il risultato della stored procedure per un campo rappresentato dal parametro che passo

    mi spiego con il codice :

    codice:
    la mia stored procedure :
    
    CREATE PROCEDURE elenco_codici
    /* in input arriva la figura, restituisce tutti i codici associati alla figura.
    */
    @figura varchar(50) , @ordinamento(50) 
     
     AS
     SELECT  
      b.codice_prodotto,  
      b.prezzo_riv,
      b.descrizione_breve,
         
     FROM
      articoli b
     WHERE     
      b.fig = @figura
      and
      b.on_line='yes'
      
      order by codice_prodotto
    return
    
    GO
    vorrei passare un parametro a questa stored procedure, da usare dove c'e' scritto ORDER BY, quindi al posto di codice_prodotto vorrei mettere un campo che passo

    vorrei ordinare per il valore indicato nella variabile @ordinamento (vedi inizio codice)

    come posso fare ???

    infatti mi da' errore se faccio : order by @ordinamento

    grazie
    Il fumo fa male a te e agli altri.
    Rispettate chi non vuole respirare il fumo passivo.

  2. #2
    devi usare una case

    codice:
    SELECT 
       .... 
    WHERE 
       ... 
    
    ORDER BY
    
       CASE WHEN @ordinamento=1 THEN campo1
               WHEN @ordinamento=2 THEN campo2
       END
    that easy!

  3. #3
    Utente di HTML.it L'avatar di billy1
    Registrato dal
    Jun 2001
    Messaggi
    549

    case

    ciao, non gli va bene la parola "CASE"
    Il fumo fa male a te e agli altri.
    Rispettate chi non vuole respirare il fumo passivo.

  4. #4

    Re: case

    Originariamente inviato da billy1
    ciao, non gli va bene la parola "CASE"
    eh già sì già... chissà come l'hai scritta con quale versione di sql lavori? cmq, posta tutta la sp

  5. #5
    Utente di HTML.it L'avatar di billy1
    Registrato dal
    Jun 2001
    Messaggi
    549

    ops

    scusa, l'accetta.

    il problema e' che io vorrei ordinare per

    - codice crescente
    - codice descrscente
    - prezzo crescente
    - prezzo decrescente

    in base ad un valore che passo alla sp

    se metto (a mano per test) :

    WHEN @ordinamento=2 THEN "prezzo_riv"

    mi dice che non si puo' convertire in modo implicito una variabile to money....

    ecco tutta la SP :

    codice:
    
    CREATE PROCEDURE elenco_codici
    /* in input arriva la figura, restituisce tutti i valori associati alla figura.
    */
    @figura varchar(50) , @ordinamento varchar(50) 
     
     AS
     SELECT  
      b.codice_prodotto,
      b.prezzo_riv,
      b.descrizione_breve,
      b.descrizione_estesa
         
     FROM
      articoli b
     WHERE     
      b.fig = @figura
      and
      b.on_line='yes'
      
      
    
    order by
    
    CASE  WHEN @ordinamento=1 THEN "codice_prodotto"
               WHEN @ordinamento=2 THEN "prezzo_riv"
       END
    
    
    return
    GO
    Il fumo fa male a te e agli altri.
    Rispettate chi non vuole respirare il fumo passivo.

  6. #6
    nel mio esempio c'erano le virgolette intorno al nome del campo?

  7. #7
    Utente di HTML.it L'avatar di billy1
    Registrato dal
    Jun 2001
    Messaggi
    549

    giusto, ma ultima cosa :

    hai ragione... pardon.
    pero' la parola da mettere per decrescente non l'accetta :

    desc

    codice:
    order by
    
    CASE  WHEN @ordinamento=1 THEN codice_prodotto
               WHEN @ordinamento=2 THEN codice_prodotto desc
    WHEN @ordinamento=3 THEN prezzo_riv
    WHEN @ordinamento=4 THEN prezzo_riv desc
    Il fumo fa male a te e agli altri.
    Rispettate chi non vuole respirare il fumo passivo.

  8. #8
    Utente di HTML.it L'avatar di billy1
    Registrato dal
    Jun 2001
    Messaggi
    549

    p

    ciao, come posso appunto fare per ordinare per un campo, in modo crescente o decrescente ?

    infatti mi da' errore di sintassi se scrivo

    WHEN @ordinamento=2 THEN codice_prodotto DESC



    grazie mille
    Il fumo fa male a te e agli altri.
    Rispettate chi non vuole respirare il fumo passivo.

  9. #9

    Re: giusto, ma ultima cosa :

    prova così

    codice:
    ....
    order by
    
    CASE  WHEN @ordinamento=1 THEN codice_prodotto
             WHEN @ordinamento=3 THEN prezzo_riv
             ELSE Null
    END ASC,
    
    CASE  WHEN @ordinamento=2 THEN codice_prodotto
             WHEN @ordinamento=4 THEN prezzo_riv 
             ELSE Null
    END DESC

  10. #10
    Utente di HTML.it L'avatar di billy1
    Registrato dal
    Jun 2001
    Messaggi
    549
    mi da' errore di sinatssi, mi dice :

    error 257 : implicit conversion to datatype varchar to money is not allowed. Use CONVERT TO function to run this query


    codice:
    CREATE PROCEDURE codici
    /* in imput arriva la figura, restituisce tutti i valori associati alla figura.
    */
    @figura varchar(50) , @ordinamento varchar(50) 
     
     AS
     SELECT  
      b.codice_prodotto,
      b.prezzo_riv,
      b.descrizione_breve,
      b.descrizione_estesa
         
     FROM
      articoli b
     WHERE     
      b.fig = @figura
      and
      b.on_line='yes'
      
      -- order by codice_prodotto
    
    order by
    
    CASE  WHEN @ordinamento=1 THEN codice_prodotto 
             WHEN @ordinamento=3 THEN prezzo_riv 
             ELSE Null
    END ASC,
    
    CASE  WHEN @ordinamento=2 THEN codice_prodotto 
             WHEN @ordinamento=4 THEN prezzo_riv  
             ELSE Null
    END DESC
    
    
       
    
    
    return
    GO
    Il fumo fa male a te e agli altri.
    Rispettate chi non vuole respirare il fumo passivo.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.