Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    1,326

    [sql firebird] select con variabile temporanea

    ciao a tutti,

    sapete dirmi come posso fare per utilizzare una variabile temporanea in una select?..

    dovrei fare questo:


    select
    tabella.importoa,
    tabella.importob,
    tabella.importoc,
    tabella.importoa+tabella.importob+tabella.importob as importotolale,
    importototale*50/100 as miovalore
    from tabella

    vorrei uilizzare la variabile importototale per un successivo calcolo.

    grazie

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2014
    residenza
    Genova, presenza costante a Milano
    Messaggi
    100
    rdb$set_context('USER_SESSION', nome_variabile, valore)
    rdb$get_context('USER_SESSION', nome_variabile)

    USER_SESSION rimane attivo per tutta la sessione corrente. Se ti serve solo all'interno della transazione corrente, usa USER_TRANSACTION.

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    1,326
    Quote Originariamente inviata da razzoli Visualizza il messaggio
    rdb$set_context('USER_SESSION', nome_variabile, valore)
    rdb$get_context('USER_SESSION', nome_variabile)

    USER_SESSION rimane attivo per tutta la sessione corrente. Se ti serve solo all'interno della transazione corrente, usa USER_TRANSACTION.
    non riesco a capire:

    select
    tabella.importoa,
    tabella.importob,
    tabella.importoc,
    tabella.importoa+tabella.importob+tabella.importob as importotolale,
    rdb$set_context('USER_SESSION', 'MyVar', tabella.importoa+tabella.importob+tabella.importob ),
    rdb$get_context('USER_SESSION', 'MyVar'),
    importototale*50/100 as miovalore
    from tabella

    perfavore, mi puoi dire cosa sbaglio?
    grazie

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2014
    residenza
    Genova, presenza costante a Milano
    Messaggi
    100
    Forse sbagli perché usi get e set nella stessa query... non so se sia una cosa supportata.

    Che problema hai?

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    1,326
    ciao,

    volevo riuscire ad assegnare il valore di alcuni campi ad una variabile e, nella stessa select, utilizzare quella stessa variabile per successivi calcoli.

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2014
    residenza
    Genova, presenza costante a Milano
    Messaggi
    100
    Sì ok, se mi dici il problema della query che hai scritto, magari mi viene qualche idea

  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    1,326
    questa è la select:

    codice:
    select
    tabella.ID,
    tabella.importoa,
    tabella.importob,
    tabella.importoc,
    tabella.importoa+tabella.importob+tabella.importob as importotolale,
    rdb$set_context('USER_SESSION', 'MyVar', tabella.importoa+tabella.importob+tabella.importob),
    rdb$get_context('USER_SESSION', 'MyVar')
    from tabella
    questo il risultato
    codice:
    ID  IMPORTOA  IMPORTOB  IMPORTOC  IMPORTOTOLALE RDB$SET_CONTEXT RDB$GET_CONTEXT
    1   55        2378      3402      4811          1               13425
    2   56        2283      3022      4622          1               4811
    3   57        5943      5130      11943         1               4622
    4   57        2132      2133      4321          1               11943
    5   57        4618      4027      9293          1               4321
    6   57        6686      6457      13429         1               9293
    7   57        6595      4045      13247         1               13429
    8   57        2309      4344      4675          1               13247
    9   57        5942      6884      11941         1               4675
    10  57        6725      4567      13507         1               11941
    11  57        4615      4181      9287          1               13507
    12  57        6685      2360      13427         1               9287
    13  57        6684      6868      13425         1               13427
    io pensavo che nella colonna 'rdb$set_context' sarebbe stato memorizzato il valore tabella.importoa+tabella.importob+tabella.importob e assegnato alla variabile MyVar

    e poi nella colonna RDB$GET_CONTEXT riuscivo a utilizzare il valore assegnato alla variabile.

  8. #8
    Utente di HTML.it
    Registrato dal
    Apr 2014
    residenza
    Genova, presenza costante a Milano
    Messaggi
    100
    Infatti get_context è sempre uguale a importototale della riga prima.

  9. #9
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    1,326
    Quote Originariamente inviata da razzoli Visualizza il messaggio
    Infatti get_context è sempre uguale a importototale della riga prima.
    allora non posso memorizzare una variabile per utilizzarla nella stessa select.

    a quanto ved set_context e get_context hanno una funzione simile a 'lag and lead' (che saranno disponibuili in Firebird 3).

  10. #10
    Utente di HTML.it
    Registrato dal
    Apr 2014
    residenza
    Genova, presenza costante a Milano
    Messaggi
    100
    Scusa, ma non capisco. Usare una variabile in una select, nella mia testa, significa esattamente quello che succede nella tua query. Se per caso vuoi usarla nella stessa riga, la variabile non serve a niente, basta che ripeti laformula importoa+importob+importoc.

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.