Sql server 2008 使用存储过程从现有表创建新表

Sql server 2008 使用存储过程从现有表创建新表,sql-server-2008,stored-procedures,Sql Server 2008,Stored Procedures,可能重复: 我想使用存储过程从现有表创建一个新表。我在这方面是新手,但在学习上没有问题。无论如何,这就是我所做的: CREATE PROCEDURE usp_CreateNewTable @NewTable nvarchar(1000), @OldTable nvarchar(1000) AS SELECT * INTO @NewTable FROM @OldTable WHERE 1 = 2 GO 这

可能重复:

我想使用存储过程从现有表创建一个新表。我在这方面是新手,但在学习上没有问题。无论如何,这就是我所做的:

CREATE PROCEDURE usp_CreateNewTable

    @NewTable nvarchar(1000),
    @OldTable nvarchar(1000)
    AS
    SELECT *
    INTO @NewTable
    FROM @OldTable
    WHERE 1 = 2                
GO
这给了我一个错误:

“@NewTable”附近的语法不正确


请深入了解并帮助…

您不能将变量名直接用于对象名。您必须编写一个表示SELECT语句的字符串,并将其作为动态SQL执行。

您可以使用动态SQL,如下所示:

CREATE PROCEDURE usp_CreateNewTable
    @NewTable nvarchar(1000),
    @OldTable nvarchar(1000)
AS
BEGIN

DECLARE @query AS NVARCHAR(MAX)

SET @query = 'SELECT * INTO ' + @NewTable + ' FROM ' + @OldTable + ' WHERE 1=1'

EXEC sp_executesql @query

END

这是动态SQL。读一读。关于这个问题已经有12000个问题了。请投票结束而不是回答,乔!我们已经有很多动态SQL问题了。谢谢你,Fosco,我非常感谢你的帮助。。。知道这很酷…保重,伙计。。。。