繁体   English   中英

如何选择INTO tableB,其名称为@tableB * FROM @tableA?

[英]How to SELECT INTO tableB which name is @tableB * FROM @tableA?

我正在创建一个存储过程,该过程必须创建一个表,该表的名称取决于输入变量。 对于临时结果,我声明了一个表变量:

declare @tableA TABLE(
column1,
column2,
..
)

输出表名称取决于用户的输入,因此我声明了另一个变量

declare @tableB varchar = ...

最后,临时结果必须存储到名称为@tableB的表中,因此在存储过程中,我尝试编写以下语句:

declare @sql varchar(max)
set @sql = 'SELECT * INTO ' + @tableB + ' FROM @tableA'
exec(@sql)

这是不正确的。 有谁知道如何将值从表变量插入到名称为变量的表中?

您不能在此处使用表变量,请尝试使用临时表。 创建表#tableA(...

有关更多信息: 链接文本

创建表#A(c1 int,c2 int);

插入#A值(1,2);

插入#A值(3,4);

声明@sql varchar(max);

声明@tableB sysname ='## tableB';

设置@sql ='SELECT * INTO'+ @tableB +'FROM #A';

打印@sql;

exec(@sql);

从## tableB选择*;

假设@tableB已经存在,首先要尝试的是:

SET @sql =
    'INSERT
    (
        col1,
        col2
    )
    INTO ' + @tableB + ' 
    SELECT 
    (
        col1, 
        col2
    )
    FROM
        @tableA'

未经语法检查,请当心!

如果@tableB不存在,为什么它的名称需要来自用户?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM