none
Creare query con nome table passato per parametro (T-SQL) RRS feed

  • Domanda

  • Salve ragazzi ho una Store Procedure che deve fare delle query su alcune tabelle. Vorrei capire se posto impostare il nome delle tabelle come variabili del tipo attualmente faccio

    Select * from Anagrafica

    Però nel caso in cui vorrei fare una Select * from @nomeTabella dove il nomeTabella lo posso passare come parametro, è possibile?

    mercoledì 3 luglio 2013 09:17

Risposte

  • Potresti usare una query dinamica.

    Un esempio è come segue:

    DECLARE @SqlQuery AS NVARCHAR(4000)
    DECLARE @NomeTabella AS VARCHAR(50)
    SET @NomeTabella = 'Anagrafica'
    SET @SqlQuery = 'SELECT * FROM ' + @NomeTabella + ';'
    EXECUTE(@SqlQuery)

    In sostanza, dichiari due variabili: la prima, sufficientemente ampia, deve poter contenere l'intero costrutto SELECT, mentre la seconda conterrà il nome della tabella. L'istruzione EXECUTE ti permetterà di eseguire la query modificata di volta in volta.

    Nel contesto della Stored Procedure, per rendere il nome tabella un parametro della procedura stessa, sarà sufficiente inserire @NomeTabella tra gli argomenti della procedura stessa, ovvero:

    CREATE PROCEDURE SelectTabella @NomeTabella VARCHAR(50)

    AS

    BEGIN

    -- Codice

    END

    Spero di esserti stato di aiuto.

    • Proposto come risposta shjonblake lunedì 22 luglio 2013 20:59
    • Contrassegnato come risposta Irina Turcu martedì 20 agosto 2013 10:13
    lunedì 22 luglio 2013 14:07