我将此查询作为我们拥有的长存储过程的一部分 如您所见,我们声明表,以便我们可以在同一过程中将其重用于查询。
如何使这种动态?
在我的情况下,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
答案 0 :(得分:0)
也许是这样的:
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'SELECT * FROM lime_survey_' + CAST(@SurveyID AS VARCHAR);
INSERT INTO @lime_survey_generic
EXECUTE sp_executesql @SQL;