2017-03-17 110 views
0

我将不胜感激对我的查询一些帮助。下面是一段运行良好的代码(表创建完成,我在tempdb中看到它),但是当我将相同的代码移动到我创建的存储过程中时,##表不再被创建并调用它后来导致无效对象。你能帮我出来吗?谢谢!!SQL - 动态查询不会创建表

SET @SQLCreateTableVSC = 'CREATE TABLE ##VSC_Temp ([' 
         [email protected]+'] nvarchar(max) 
         ,['[email protected]+'] nvarchar(max) 
         ,['[email protected]+'] nvarchar(max) 
         ,['[email protected]+'] nvarchar(max) 
         ,['[email protected]+'] nvarchar(max) 
         ,['[email protected]+'] nvarchar(max) 
         ,['[email protected]+'] nvarchar(max) 
         ,['[email protected]+'] nvarchar(max) 
         ,['[email protected]+'] nvarchar(max) 
         ,['[email protected]+'] nvarchar(max) 
         ,['[email protected]+'] nvarchar(max) 
         ,['[email protected]+'] nvarchar(max) 
         ,['[email protected]+'] nvarchar(max) 
         ,['[email protected]+'] nvarchar(max) 
         )' 

    execute sp_executeSQL @SQLCreateTableVSC 
    , N'@VSCcolname nvarchar(max) 
    ,@moname1 nvarchar(max) 
    ,@moname2 nvarchar(max) 
    ,@moname3 nvarchar(max) 
    ,@moname4 nvarchar(max) 
    ,@moname5 nvarchar(max) 
    ,@moname6 nvarchar(max) 
    ,@moname7 nvarchar(max) 
    ,@moname8 nvarchar(max) 
    ,@moname9 nvarchar(max) 
    ,@moname10 nvarchar(max) 
    ,@moname11 nvarchar(max) 
    ,@moname12 nvarchar(max) 
    ,@moname13 nvarchar(max)' 
    , @[email protected] 
    , @[email protected] 
    , @[email protected] 
    , @[email protected] 
    , @[email protected] 
    , @[email protected] 
    , @[email protected] 
    , @[email protected] 
    , @[email protected] 
    , @[email protected] 
    , @[email protected] 
    , @[email protected] 
    , @[email protected] 
    , @[email protected] 
+1

标签的DBMS你正在使用。该代码是特定于产品的。 – jarlh

+0

是的,当你的代码不是真正的sql,而是SQL Server特有的时候,会有sql的标签,这会导致看着sql标签的人不满意你。 –

回答

0

你需要创建表第一那么它将在动态SQL可

这个作品

create table #temp3 (id int) 
exec ('insert #temp3 values(1)') 

select * from #temp3 

这是不行的

exec ('create table #temp2 (id int) 
    insert #temp2 values(1)') 

select * from #temp2 
+0

我遇到的问题是,我不知道如何创建列名作为动态SQL之外的变量......可以这样做吗? – GeneG