我必须执行动态SQL SELECT
查询并将结果放入#TempTable
。
DECLARE @StateId CHAR(3)='StateID';
DECLARE @DeptId CHAR(15)='DeptID';
DECLARE @Query VARCHAR(MAX)='Select Columns With Joins Passed From Front End'
DECLARE @Where VARCHAR(500);
DECLARE @FinalQuery VARCHAR(MAX)='';
SET @Where='Some Where Condition';
SET @FinalQuery='SELECT '+@Query+' '+@Where+''
EXEC(@FinalQuery) -- Want To INSERT THIS Result IN SOME `#TempTable`
-- SO that I can perform Some Operations On `#TempTable`
ALSO否从动态SQL SELECT
返回的列是动态的。
谢谢,
答案 0 :(得分:4)
尝试以下示例
DECLARE @StateId CHAR(3)='StateID';
DECLARE @DeptId CHAR(15)='DeptID';
DECLARE @Query VARCHAR(MAX)='*' -- here you pass your query
DECLARE @Where VARCHAR(500);
DECLARE @FinalQuery VARCHAR(MAX)='';
SET @Where='from tablename where condition';
SET @FinalQuery='SELECT '+@Query+' INTO #temptablename '+@Where;
EXEC(@FinalQuery)
请注意 :如果你需要在sp执行后使用temtable然后使用##而不是#然后我们可以访问它或者我们可以使用持久临时表
答案 1 :(得分:0)
请确保您的查询语句正确无误。 在存储过程中尝试此操作并检查输出结果(复制结果并执行它)
....
SET @FinalQuery='SELECT '+@Query+' '+@Where+'
PRINT(@FinalQuery)
....
您可以使用 SQL Profiler 工具进行调试
答案 2 :(得分:0)
试试这个...... 首先创建进一步计算所需的临时表。
CREATE TABLE #TEMP ( STATEID INT, DEPTID INT )
DECLARE @STATEID CHAR(10)='STATEID';
DECLARE @DEPTID CHAR(15)='DEPTID';
DECLARE @QUERY VARCHAR(MAX)='INSERT INTO #TEMP_TABLE
SELECT COLUMNS WITH JOINS PASSED FROM FRONT END'
DECLARE @WHERE VARCHAR(500);
DECLARE @FINALQUERY VARCHAR(MAX)=''
SET @WHERE='SOME WHERE CONDITION'
SET @FINALQUERY=+@QUERY+' '+@WHERE+'' -- REMOVED SELECT
EXEC(@FINALQUERY)