ho la necessità di fare una SELECT all'interno di una funzione SQL
utilizzando come nome della tabella (nella preposizione FROM) una
variabile anzichè il nome vero e proprio. Faccio un esempio:
ho tre tabella così chiamate:
Tabella1
Tabella2
Tabella3
Adesso vorrei, passando alla funzione semplicemente il numero (1,2,3)
far riferimento alla tabella, diciamo più o meno in questo modo:
set @Tabella='Tabella'+@ValPassato
SELECT @var=campo FROM @Tabella
quello che ho scritto ovviamente non funziona, ma è per rendere l'idea
di cosa vorrei ottenere
Grazie 1000
Devi ricorrere al SQL dinamico. Costruisci la stringa rappresentante la
query e la esegui con il metodo EXECUTE o con il comando sp_executesql.
> Grazie 1000
Bye
--
Luca Bianchi
Microsoft MVP - SQL Server
puoi farmi un esempio, perchè guardando in giro sui vari forum sembra
non sia possibile chiamare il comando EXEC
all'interno di una funzione. In particolare ho visto questo sito:
http://stackoverflow.com/questions/150552?tab=newest#tab-top
Grazie per l'interessamento!
No, te lo do per certo che non si può richiamare una istruzione dinamica da
una UDF. Al di la del fatto che gli statemente dinamici hanno una serie di
controindicazioni la cosa migliore da fare è lasciarli stare e definire n
UDF tante quante te ne servono.
> Grazie per l'interessamento!
Io proverei a rivedere la cosa girandola in modo diverso.
Però posso scrivere solo qualcosa di legato al tuo esempio, non una
cosa generica
SELECT @VAR =
COALESCE(T1.CAMPO, T2.CAMPO, T3.CAMPO)
FROM (SELECT 1) AS A
LEFT OUTER JOIN TABELLA1 AS T1
ON @NUMERO='1'
AND T1.CHIAVE = <QUELLO CHE VUOI>
LEFT OUTER JOIN TABELLA2 AS T2
ON @NUMERO='2'
AND T2.CHIAVE = <QUELLO CHE VUOI>
LEFT OUTER JOIN TABELLA3 AS T3
ON @NUMERO='3'
AND T3.CHIAVE = <QUELLO CHE VUOI>
In sostanza, proverei a ricondurmi in qualche modo ad una forma pseudo
normale...
Alberto