Azure SQL数据仓库插入临时表时遇EXEC解析错误求助
解决Azure SQL数据仓库动态SQL插入临时表的语法错误
你的代码存在两处语法问题:
- 执行动态SQL变量时,
EXEC后必须用括号包裹带@前缀的变量,你写的EXEC SQL2不符合语法规范,正确写法是EXEC (@SQL2) - 代码末尾的
***属于无效多余字符,必须删除
修正后的完整代码如下:
DECLARE @SQL2 NVARCHAR(1000) CREATE TABLE #TempTable (L NVARCHAR(100)) SET @SQL2 = 'SELECT Col1 FROM Table1' INSERT INTO #TempTable (L) EXEC (@SQL2)
如果使用表变量,同样要遵循EXEC的语法规则,示例代码:
DECLARE @T TABLE (ID INT) DECLARE @SQL NVARCHAR(1000) = 'SELECT ID FROM SomeTable' INSERT INTO @T (ID) EXEC (@SQL)
额外注意Azure SQL数据仓库的临时表特性:
- 本地临时表(以
#开头)仅在当前会话中可见,会话结束后会自动销毁 - 动态SQL插入外部创建的临时表时,需确保会话上下文一致,避免作用域问题
内容的提问来源于stack exchange,提问作者Neha Singh
相关产品推荐
相关产品推荐

