Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2010
    Messaggi
    117

    Problema sintassi Stored Procedure [SQL Server]

    Ragazzi sto creando una Stored Procedure che mi permetta di avere un legame con gli ordini e i loro relativi giorni in cui è stato effettuato l'ordine.
    Dovrei, utilizzando la funzione month, portare la data d'ordine in un numero intero, rappresentante il mese.
    Questo è il mio codice sorgente, ma mi vengono restituiti degli errori durante la compilazione.
    Ecco il link contenente il codice e gli errori:
    http://www.megaupload.com/?d=8DXHM5QU
    Cosa sbaglio?!

  2. #2
    posta la query, evidenziando la riga che genera l'errore

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2010
    Messaggi
    117
    Ecco il codice sorgente e gli errori dati:
    Codice Sorgente

    CREATE PROCEDURE [dbo].[Orders]
    AS

    BEGIN

    CREATE TABLE #Orders
    (
    OrderID varchar (50),
    CustomerID varchar (50),
    Employee varchar (50),
    Gennaio int,
    Febbraio int,
    Marzo int,
    Aprile int,
    Maggio int,
    Giugno int,
    Luglio int,
    Agosto int,
    Settembre int,
    Ottobre int,
    Novembre int,
    Dicembre int
    )

    DECLARE @OrderID varchar(50) -- Ordine ID
    DECLARE @CustomerID varchar (50) -- Customer ID
    DECLARE @Employee varchar (50) -- Dipendente
    DECLARE @OrderDate datetime --Data ordine
    DECLARE @Month int -- Mese ordine

    /*Dichiaro Cursore*/
    DECLARE Orders_cursor CURSOR FOR
    SELECT * FROM Orders

    OPEN Orders_cursor
    FETCH Orders_cursor INTO @OrderID, @CustomerID, @Employee, @OrderDate

    WHILE @@FETCH_STATUS = 0

    /*Setto la data in numero mese*/
    BEGIN

    SET @Month = MONTH (@OrderDate)

    IF @Month=1 INSERT INTO Gennaio
    ELSE IF @Month=2 INSERT INTO Febbraio
    ELSE IF @Month=3 INSERT INTO Marzo
    ELSE IF @Month=4 INSERT INTO Aprile
    ELSE IF @Month=5 INSERT INTO Maggio
    ELSE IF @Month=6 INSERT INTO Giugno
    ELSE IF @Month=7 INSERT INTO Luglio
    ELSE IF @Month=8 INSERT INTO Agosto
    ELSE IF @Month=9 INSERT INTO Settembre
    ELSE IF @Month=10 INSERT INTO Ottobre
    ELSE IF @Month=11 INSERT INTO Novembre
    ELSE IF @Month=12 INSERT INTO Dicembre
    END
    CLOSE Orders_cursor
    DEALLOCATE Orders_cursor

    SELECT * FROM #Orders

    END


    Errori

    Messaggio 156, livello 15, stato 1, procedura Orders, riga 46
    Incorrect syntax near the keyword 'ELSE'.
    Messaggio 156, livello 15, stato 1, procedura Orders, riga 47
    Incorrect syntax near the keyword 'ELSE'.
    Messaggio 156, livello 15, stato 1, procedura Orders, riga 48
    Incorrect syntax near the keyword 'ELSE'.
    Messaggio 156, livello 15, stato 1, procedura Orders, riga 49
    Incorrect syntax near the keyword 'ELSE'.
    Messaggio 156, livello 15, stato 1, procedura Orders, riga 50
    Incorrect syntax near the keyword 'ELSE'.
    Messaggio 156, livello 15, stato 1, procedura Orders, riga 51
    Incorrect syntax near the keyword 'ELSE'.
    Messaggio 156, livello 15, stato 1, procedura Orders, riga 52
    Incorrect syntax near the keyword 'ELSE'.
    Messaggio 156, livello 15, stato 1, procedura Orders, riga 53
    Incorrect syntax near the keyword 'ELSE'.
    Messaggio 156, livello 15, stato 1, procedura Orders, riga 54
    Incorrect syntax near the keyword 'ELSE'.
    Messaggio 156, livello 15, stato 1, procedura Orders, riga 55
    Incorrect syntax near the keyword 'ELSE'.
    Messaggio 156, livello 15, stato 1, procedura Orders, riga 56
    Incorrect syntax near the keyword 'ELSE'.
    Messaggio 156, livello 15, stato 1, procedura Orders, riga 57
    Incorrect syntax near the keyword 'END'.

  4. #4
    dentro sql devi usare la CASE, non la IF

  5. #5
    ma non ho ben capito cosa dovrebbe fare la sp

  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2010
    Messaggi
    117
    Praticamente creo una tabella temporanea e vado a popolarla con dei dati (ordini) che vado a prendere da un'altra tabella, leggendo essi orizzontelmente. Poi devo creare 12 colonne che sono i mesi, e scrivere per ogni record il mese di ordine corrispondente che vado a prendere dalla tabella originale.

  7. #7
    vuoi quindi ottenere quanti ordini hai ricevuto per ogni mese?

  8. #8
    Utente di HTML.it
    Registrato dal
    Jan 2010
    Messaggi
    117
    Esatto, lo scopo finale è quello. Però prima devo convertire la data da GG/MM/AAAA ad MM.
    Esempio: se un ordine è stato fatto il 01/01/2010 io devo inseirire nel mese Gennaio del corrispettivo record 01.
    Adesso ho concluso il codice e ho risolto il blocco IF.

  9. #9
    ----------------------------------------------------
    nello spirito del forum, spiega come hai fatto, così aiuterai qualche altro forumista che dovesse avere lo stesso problema.
    ----------------------------------------------------

    anche se penso che l'uso del cursore renda la procedura piuttosto lenta...

  10. #10
    Utente di HTML.it
    Registrato dal
    Jan 2010
    Messaggi
    117
    Ecco:
    IF @variabile= valore
    INSERT INTO tabella()
    VALUES ()
    ELSE IF @variabile=valore
    INSERT INTO tabella()
    VALUES ()

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.