Я получил этот запрос как часть нашей длинной хранимой процедуры, которая у нас есть.
Как видите, мы объявляем таблицу, чтобы мы могли повторно использовать ее для запроса в рамках той же процедуры.
Как сделать это динамическим?
Потому что в моем случае таблица lime_survey_XXX
является динамической в зависимости от переменной, которую вы передали.
Теперь ... Я могу включить это DECLARE @lime_survey_generic
как часть строки запроса, но затем я хочу иметь возможность повторно использовать эту таблицу для запроса позже в рамках той же хранимой процедуры.
DECLARE @lime_survey_generic TABLE
(
id INT,
submitdate DATETIME,
lastpage INT,
startlanguage VARCHAR(20),
token VARCHAR(36),
datestamp DATETIME,
startdate DATETIME,
ipaddr TEXT,
refurl TEXT,
Q010101 VARCHAR(5),
Q010102 VARCHAR(5),
Q010103 TEXT,
Q010201 VARCHAR(5),
Q010202 VARCHAR(5),
Q010203 TEXT,
Q010301 VARCHAR(5),
Q010302 VARCHAR(5),
Q010303 TEXT,
Q010401 VARCHAR(5),
Q010402 VARCHAR(5),
Q010403 TEXT,
Q010501 VARCHAR(5),
Q010502 VARCHAR(5),
Q010503 TEXT,
Q010601 VARCHAR(5),
Q010602 VARCHAR(5),
Q010603 TEXT,
Q010701 VARCHAR(5),
Q010702 VARCHAR(5),
Q010703 TEXT,
Q010801 VARCHAR(5),
Q010802 VARCHAR(5),
Q010803 TEXT,
Q010901 VARCHAR(5),
Q010902 VARCHAR(5),
Q010903 TEXT,
Q011001 VARCHAR(5),
Q011002 VARCHAR(5),
Q011003 TEXT,
Q011101 VARCHAR(5),
Q011102 VARCHAR(5),
Q011103 TEXT,
Q011201 VARCHAR(5),
Q011202 VARCHAR(5),
Q011203 TEXT,
Q011301 VARCHAR(5),
Q011301Other TEXT
);
DECLARE @SQL NVARCHAR(128);
SET @SQL = N'INSERT INTO ' + @lime_survey_generic + ' ' +
'SELECT * FROM lime_survey_' + CAST(@SurveyID AS VARCHAR)
EXECUTE sp_executesql @SQL