Pagina 1 di 4 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 34
  1. #1

    [SQL SERVER 2005] casting di variabili in una stored procedure

    Ciao a tutti,

    io ho questo codice in una SP


    DECLARE @PERC AS float
    DECLARE @QUERY AS VARCHAR(5000)
    DECLARE @QUERY2 AS VARCHAR(5000)
    DECLARE @dividendo AS float
    DECLARE @divisore AS float

    set @QUERY = 'SELECT SUM (CAST ('+ @nome_soc_repl + ' as float)) FROM ExpTot'

    set @QUERY2 = '(SELECT SUM (CAST ('+ @nome_soc_repl + ' as float)) FROM ExpTot where sede_tecnica = '''+ @CODE_PREFIX2 +''')'

    exec (@QUERY)
    exec (@QUERY2)

    praticamente eseguo 2 query...che mi ritornano 2 numeri....che poi dovrei dividere

    pensavo di usare una sintassi di questo tipo

    set @dividendo = (CAST(@QUERY) as float)
    set @divisore = (CAST(@QUERY2) as float)
    set @perc = (@dividendo /@divisore) * 100

    ma mi dice

    Msg 137, Level 15, State 2, Line 1
    Must declare the scalar variable "@QUERY".

    qualche suggerimento?
    grazie!

  2. #2
    non ti basta fare

    SELECT @variabile=SUM(campo) FROM tabella

    ???

  3. #3
    se io faccio

    SELECT @dividendo = SUM(CAST (@nome_soc_repl as float)) FROM ExpTot

    mi dice
    Msg 8114, Level 16, State 5, Line 87
    Error converting data type varchar to float.

    fai conto che il campo su cui faccio il sum è una variabile....e il campo è di tipo varchar...quindi devo fare il cast...

    in definitiva io devo mettere in una variabile la somma presa da questa select su questo campo...

    così mi andava bene
    set @QUERY = 'SELECT SUM (CAST ('+ @nome_soc_repl + ' as float)) FROM ExpTot'

    set @QUERY2 = '(SELECT SUM (CAST ('+ @nome_soc_repl + ' as float)) FROM ExpTot where sede_tecnica = '''+ @CODE_PREFIX2 +''')

    solo che poi non riesco ad associare i 2 valori a 2 altre variabili di tipo float....

  4. #4
    ma @nome_soc_repl che cos'è?

    puoi fare un esempio di come dovrebbe venire la query svolta? (cioè con un nome di colonna reale al posto della variabile)

  5. #5
    Utente di HTML.it L'avatar di comas17
    Registrato dal
    Apr 2002
    Messaggi
    6,523
    Ma così non ti funzionerà mai; se la variabile @nome_soc_repl è un varchar e si chiama "pippo" come fai a trasformarla in un varchar ?

    E comunque la funzione sum() ha come argomento il "nome" della colonna di cui fare la somma. Evidentemente i valori contenuti in questa colonna saranno numerici, così da poterci fare la somma, ma il nome è ovviamente una stringa e va bene così

  6. #6
    @nome_soc_repl è il nome della colonna....ed è una variabile.....e il campo è di tipo varchar

    la query serebbe così

    (SELECT SUM ( CAST (ABB_SACE as float)) FROM exptot)

    e funziona...... quello che mi manca è mettere il risultato in una variabile per poi fare dei conti...

  7. #7
    Utente di HTML.it L'avatar di comas17
    Registrato dal
    Apr 2002
    Messaggi
    6,523
    Originariamente inviato da elsinore77
    @nome_soc_repl è il nome della colonna....ed è una variabile.....e il campo è di tipo varchar

    la query serebbe così

    (SELECT SUM ( CAST (ABB_SACE as float)) FROM exptot)

    e funziona...... quello che mi manca è mettere il risultato in una variabile per poi fare dei conti...
    Hai ragione, mi ero confuso io; tu vuoi "castare" in float il contenuto della colonna ABB_SACE

    Ma tu devi per forza costruire una query che abbia il nome della colonna variabile ?

  8. #8
    e si purtroppo si.....il nome della colonna è in una variabile...

    facendo così

    set @QUERY = 'SELECT SUM (CAST ('+ @nome_soc_repl + ' as float)) FROM ExpTot'

    set @dividendo = CAST (@QUERY as float)

    mi dice

    Msg 8114, Level 16, State 5, Line 91
    Error converting data type varchar to float.

    non capisco se va in errore perchè dentro @QUERY si trova la SELECT.....invece del numero...

  9. #9
    Utente di HTML.it L'avatar di comas17
    Registrato dal
    Apr 2002
    Messaggi
    6,523
    Originariamente inviato da elsinore77
    e si purtroppo si.....il nome della colonna è in una variabile...

    facendo così

    set @QUERY = 'SELECT SUM (CAST ('+ @nome_soc_repl + ' as float)) FROM ExpTot'

    set @dividendo = CAST (@QUERY as float)

    mi dice

    Msg 8114, Level 16, State 5, Line 91
    Error converting data type varchar to float.

    non capisco se va in errore perchè dentro @QUERY si trova la SELECT.....invece del numero...
    si, la tua variabile @query in quel momento vale 'SELECT SUM.....' quindi è una stringa ed essendo piena di caratteri alfabetici non viene convertita in float

  10. #10
    Utente di HTML.it L'avatar di comas17
    Registrato dal
    Apr 2002
    Messaggi
    6,523
    La butto lì ...

    e provare una cosa del tipo

    set @QUERY = 'SET @dividendo = (SELECT SUM (CAST ('+ @nome_soc_repl + ' as float)) FROM ExpTot)'

    set @QUERY2 = 'SET @divisore = (SELECT SUM (CAST ('+ @nome_soc_repl + ' as float)) FROM ExpTot where sede_tecnica = '''+ @CODE_PREFIX2 +''')'

    exec (@QUERY)
    exec (@QUERY2)

    set @perc = (@dividendo /@divisore) * 100

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.