create PROCEDURE [dbo].[当月生日名单](@请输入生日月份nvarchar(50)),(@厂别nvarchar(50))
AS SELECT 工号AS 全厂在职人数, 姓名, 性别, MONTH(出生日期) AS 年龄, 部门, 班组车间, 
      职务工种, 进厂日期, 学历, 身份证号码, 出生日期, 住址, 签约日期, 参保日期, 
      续约日期, 合同到期日期, 调动日期, 入职调薪日期, 输入日期, 暂住证号, 备注, 
      介绍人
FROM dbo.工人基本资料
WHERE (是否离职= 0) AND (MONTH(出生日期) = @请输入生日月份) and 厂别= @厂别
GROUP BY 工号, 姓名, 性别, 部门, 班组车间, 职务工种, 进厂日期, 学历, 身份证号码, 
      出生日期, 住址, 签约日期, 参保日期, 续约日期, 合同到期日期, 调动日期, 
      入职调薪日期, 输入日期, 暂住证号, 备注, 介绍人, MONTH(出生日期) 老是提示如下错误消息170,级别15,状态1,过程当月生日名单,第1 行
第1 行: ',' 附近有语法错误。
消息137,级别15,状态2,过程当月生日名单,第7 行
必须声明变量'@厂别'
请高手帮我看一下错在那里,非常感谢

解决方案 »

  1.   

    把参数的那两个括号去掉
    create PROCEDURE [dbo].[当月生日名单]
    @请输入生日月份 nvarchar(50)
    ,@厂别 nvarchar(50) 
    AS 
    SELECT 工号AS 全厂在职人数, 姓名, 性别, MONTH(出生日期) AS 年龄, 部门, 班组车间, 
          职务工种, 进厂日期, 学历, 身份证号码, 出生日期, 住址, 签约日期, 参保日期, 
          续约日期, 合同到期日期, 调动日期, 入职调薪日期, 输入日期, 暂住证号, 备注, 
          介绍人 
    FROM dbo.工人基本资料 
    WHERE (是否离职= 0) AND (MONTH(出生日期) = @请输入生日月份) and 厂别= @厂别 
    GROUP BY 工号, 姓名, 性别, 部门, 班组车间, 职务工种, 进厂日期, 学历, 身份证号码, 
          出生日期, 住址, 签约日期, 参保日期, 续约日期, 合同到期日期, 调动日期, 
          入职调薪日期, 输入日期, 暂住证号, 备注, 介绍人, MONTH(出生日期) 
      

  2.   

    create PROCEDURE [dbo].[当月生日名单]
    @请输入生日月份 nvarchar(50),
    @厂别 nvarchar(50)
    AS 
    SELECT 工号AS 全厂在职人数, 姓名, 性别, MONTH(出生日期) AS 年龄, 部门, 班组车间, 
          职务工种, 进厂日期, 学历, 身份证号码, 出生日期, 住址, 签约日期, 参保日期, 
          续约日期, 合同到期日期, 调动日期, 入职调薪日期, 输入日期, 暂住证号, 备注, 
          介绍人 
    FROM dbo.工人基本资料 
    WHERE (是否离职= 0) AND (MONTH(出生日期) = @请输入生日月份) and 厂别= @厂别 
    GROUP BY 工号, 姓名, 性别, 部门, 班组车间, 职务工种, 进厂日期, 学历, 身份证号码, 
          出生日期, 住址, 签约日期, 参保日期, 续约日期, 合同到期日期, 调动日期, 
          入职调薪日期, 输入日期, 暂住证号, 备注, 介绍人, MONTH(出生日期) 
      

  3.   

    create PROCEDURE [dbo].[当月生日名单]
    (@请输入生日月份 nvarchar(50),
    @厂别 nvarchar(50)) AS SELECT 工号AS 全厂在职人数, 姓名, 性别, MONTH(出生日期) AS 年龄, 部门, 班组车间, 
          职务工种, 进厂日期, 学历, 身份证号码, 出生日期, 住址, 签约日期, 参保日期, 
          续约日期, 合同到期日期, 调动日期, 入职调薪日期, 输入日期, 暂住证号, 备注, 
          介绍人 
    FROM dbo.工人基本资料 
    WHERE (是否离职= 0) AND (MONTH(出生日期) = @请输入生日月份) and 厂别= @厂别 
    GROUP BY 工号, 姓名, 性别, 部门, 班组车间, 职务工种, 进厂日期, 学历, 身份证号码, 
          出生日期, 住址, 签约日期, 参保日期, 续约日期, 合同到期日期, 调动日期, 
          入职调薪日期, 输入日期, 暂住证号, 备注, 介绍人, MONTH(出生日期) 
      

  4.   

    (@厂别nvarchar(50)) 
    -------------------》》
    (@厂别 nvarchar(50)) 
    -------------------------类型和参数中间要用空格,因nvarchar(50) 和varchar(50)都是认可的类型,所以在这里系统认为是@厂别n而不是@厂别了
      

  5.   

    (@请输入生日月份nvarchar(50)),(@厂别nvarchar(50)) 
    变量与数据类型用空格分开~~