Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

eseguire una query con una variabile come nome tabella in una funzione

1,456 views
Skip to first unread message

wlady

unread,
Mar 22, 2010, 2:16:38 PM3/22/10
to
Ciao a tutti

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


Luca Bianchi

unread,
Mar 22, 2010, 4:12:37 PM3/22/10
to
> 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:

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


wlady

unread,
Mar 23, 2010, 5:31:22 AM3/23/10
to
On 22 Mar, 21:12, "Luca Bianchi" <rightjoinREMOVE_T...@hotmail.com>
wrote:

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!

Luca Bianchi

unread,
Mar 23, 2010, 7:39:46 AM3/23/10
to
> non sia possibile chiamare il comando EXEC
> all'interno di una funzione.

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!

Albe V°

unread,
Mar 23, 2010, 7:50:20 AM3/23/10
to
Scriveva wlady lunedì, 22/03/2010:

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


0 new messages