【发布时间】:2015-03-02 20:17:53
【问题描述】:
如果它不存在,我正在尝试创建一个过程。此过程采用date 类型的参数:
IF NOT EXISTS (SELECT * FROM sys.objects WHERE type = 'P' AND name = 'GetAllManualInsertionsFromDate')
CREATE PROCEDURE volumetrie.GetAllManualInsertionsFromDate
@date date
AS
BEGIN
SELECT i.Id, i.EntryDate, c.CustomerNumber, i.NbEnvelopes As envelope, i.NbBoxes As box,
c.Name, YEAR(@date) As dateYear, MONTH(@date) As dateMonth, s.Raccourci as area
FROM volumetrie.InsertionManuelle As i
INNER JOIN dbo.Customers As c ON i.ClientId = c.CustId
INNER JOIN dbo.Sites s ON i.SiteCode = s.CodeSite
WHERE i.EntryDate >= @date
END
我在使用@date 参数的所有三个地方都收到错误:
必须声明标量变量@date
我在 BEGIN 关键字上也遇到另一个错误,这可能会导致另一个错误:
“BEGIN”附近的语法不正确。期待外部。
你知道我做错了吗?
【问题讨论】:
-
创建过程必须是批处理中的唯一语句。这不是你在这里所拥有的。如果该过程已经存在,您需要使用您的条件来删除该过程,或者使用动态 sql 生成您的过程。
-
谢谢,我会记住动态 SQL 作为替代方案。
标签: sql sql-server tsql stored-procedures