奇数存储过程错误 - 语法?

时间:2011-11-19 15:51:26

标签: sql sql-server sql-server-2005

我正在尝试在SQL Server 2005中创建一个简单的存储过程,并且对我遇到的语法错误感到困惑。

两个表都具有相同的结构。 tbl_Users_non_61为空,已准备好接收数据。

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE Make_WEEKLY_SUMMARY 
AS
BEGIN
   SET NOCOUNT ON;
   Select (tbl_Users.UserID
      , tbl_Users.RegistrationType
      , tbl_Users.Datecompleted)
   INTO tbl_Users_non_61  
   FROM 
   SELECT tbl_Users.UserID
      , tbl_Users.RegistrationType
      , tbl_Users.Datecompleted
   FROM tbl_Users;
END
GO

结果错误:

  

Msg 102,Level 15,State 1,Procedure Make_WEEKLY_SUMMARY,Line 5
  ','。**

附近的语法不正确

2 个答案:

答案 0 :(得分:3)

由于您只想将记录插入另一个表中,因此语法更清晰:

INSERT INTO tbl_Users_non_61(UserId, RegistrationType, DateCompleted)
SELECT u.UserID, u.RegistrationType, u.Datecompleted
FROM tbl_Users AS u

要回答你的问题,你不需要围绕你的第一个选择( ),但是你需要围绕你的子选择,那么你需要使用{{对你引用的子查询进行别名1}}:

FROM

答案 1 :(得分:1)

试试这个:

SELECT
    tbl_Users.UserID
  , tbl_Users.RegistrationType
  , tbl_Users.Datecompleted 
INTO tbl_Users_non_61  
FROM tbl_Users;

当您SELECT ... INTO时,如果列仅来自一个表,则无需再次SELECT这些列。即使您必须从多个列中获取数据,您仍然不需要重新选择它们,而是执行连接。