我正在尝试编写一个自定义存储过程来执行select into操作。我想将一个表(或表中的某些列)从一个数据库复制到另一个数据库。我正在使用SQL Server 2012
CREATE Procedure select_into
AS
Begin
@selection varchar(128),
@newtabname varchar(128)
@fromtabname varchar(128)
Select selection,
INTO table1,
FROM table2,
WHERE selection = @selection AND table1 = @newtabname AND table2 =@fromtabname;
go
EXEC select_into, Ecode, relational_db.dbo.work, dbo.Work_Data;
我收到一条错误消息,指出“。”附近的语法错误。在relational_db.dbo.work
。
我很感激能帮助你做到这一点
答案 0 :(得分:2)
您在参数列表中缺少逗号,并且过程声明的语法错误。它应该是::
CREATE Procedure select_into
(
@selection varchar(128),
@newtabname varchar(128),
@fromtabname varchar(128)
)
AS
Begin
但另外,INSERT INTO
的语法包含额外的逗号,并且您无法以这种方式执行动态T-SQL。
我是否可以建议您首先了解SQL Server的TSQL语法。
答案 1 :(得分:1)
尝试这样的事情......
CREATE Procedure select_into
@selection NVARCHAR(128),
@newtabname NVARCHAR(128),
@fromtabname NVARCHAR(128)
AS
BEGIN
SET NOCOUNT ON;
DECLARE @sql NVARCHAR(MAX);
SET @sql = N'Select ' + QUOTENAME(@selection) +
N' INTO ' + QUOTENAME(@newtabname) +
N' FROM ' + QUOTENAME(@fromtabname)
EXECUTE sp_executesql @sql
END