none
Query con nome tabella come parametro RRS feed

  • Domanda

  • Ciao,

    sto facendo una query in cui ho bisogno di specificare il nome della tabella tramite variabile. Come si fa???

    Io ho provato così ma non và:

    Comando.CommandText = "SELECT * FROM @Tabella WHERE ID=@ID";

    Tab.ParameterName = "@Tabella";
    Tab.SqlDbType = SqlDbType.VarChar;
    Tab.Size = 10;
    Tab.Direction = ParameterDirection.Input;
    Tab.Value = Tabella;

    Tabella è la mia variabile in cui ho il nome della tabella.

    martedì 8 aprile 2014 15:53

Risposte

Tutte le risposte

  • no, il TSQL non accetta di parametrizzare il nome tabella, neppure da riga comando.

    Se capisco tu sei da codice; se si allora devi risolvere la stringa prima di assegnarla a CommandText.

    Una cosa tipo: 

    dim Tabella variant = "PIPPO"

    Comando.CommandText = "SELECT * FROM " & Tabella & " WHERE ID=@ID"

    la WHERE invece funziona e puoi lasciarla parametrica (la discussione sulle performance la lasciamo per dopo ;-))

    martedì 8 aprile 2014 18:30
  • Aggiungo solo a quanto detto da pgfiore di fare attenzione a eventuali problematiche di sql injection.
    mercoledì 9 aprile 2014 09:49
  • Non mi funziona. la parola variant non viene riconosciuta e il simbolo & nella query viene rifiutato.

    Questa cosa di risolvere la stringa però mi sembra molto interessante.

    variant devo dichiararla in qualche modo??? Il mio code behind è in C#.

    giovedì 10 aprile 2014 09:18
  • Il codice che ha scritto è in VB.

    Definisci pure una variabile di tipo stringa e usa il + per la concatenazione.

    • Contrassegnato come risposta WebDeveloper3 sabato 12 aprile 2014 08:45
    giovedì 10 aprile 2014 12:35
  • Funziona, non ci avevo pensato. Grazie mille!!!
    sabato 12 aprile 2014 08:44