Załóżmy, że potrzebujemy procedurę składowaną, która w zależności od zadanego parametru wyciągnie dane z tabeli podanej jako argument do procedury składowanej.
Na pierwszy rzut oka wyglądałoby, że wystarczy utworzyć procedurę postaci::
CREATE PROCEDURE getDataFromTable
@TName nvarchar(100)
AS
BEGIN
SELECT * FROM @TName
END
@TName to argument wejściowy będący nazwą tabeli.
Jednak ta procedura spowoduje błąd postaci: Must declare the table variable “@TName”
Rozwiązanie tego problemu leży właśnie w dynamicznym SQL:)
Zatem powyższa procedura powinna mieć postać:
CREATE PROCEDURE getDataFromTable
@TName nvarchar(100)
AS
BEGIN
DECLARE @query nvarchar(1000)
SELECT @query = 'SELECT * FROM '
SELECT @query = @query + @TName
EXEC(@query)
END
Nazwa tabeli nadal pozostaje argumentem wejściowym. Dodatkowo w kodzie SQL-a tworzymy zmienną @query, w której umieszczamy potrzebne nam zapytanie.