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,我非常感谢你的帮助。。。知道这很酷…保重,伙计。。。。