Nazwa tabeli jako parametr w procedurze składowanej
Kategorie: (Dynamic SQL), napisany przez: Maga, data: 04-11-2007
Tagi: Dynamic SQL
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.

english
polski
Od 2005 roku pracuję jako programistka. Zajmuję się tworzeniem aplikacji internetowych. Zaczynałam od PHP, obecnie działam w .NET.
