Sql server 这个简单的SQL有什么问题?当放入一个存储过程时失败,否则无效

Sql server 这个简单的SQL有什么问题?当放入一个存储过程时失败,否则无效,sql-server,sql-server-2005,stored-procedures,Sql Server,Sql Server 2005,Stored Procedures,当我按原样运行时,它工作得非常好,但将这段代码放入SQL2005中的存储过程失败了 我得到这个错误 Msg 102,15级,状态1,程序GetCurrentLoadDate,第23行。 “@vardate”附近的语法不正确 这个调用可以作为声明工作并返回结果集,但如果放入存储过程,则会失败,这有什么错呢 declare @date datetime declare @vardate varchar(10) set @date = getDate() set @vardate = CONVER

当我按原样运行时,它工作得非常好,但将这段代码放入SQL2005中的存储过程失败了

我得到这个错误

Msg 102,15级,状态1,程序GetCurrentLoadDate,第23行。 “@vardate”附近的语法不正确

这个调用可以作为声明工作并返回结果集,但如果放入存储过程,则会失败,这有什么错呢

declare @date datetime
declare @vardate varchar(10)

set @date = getDate()

set @vardate = CONVERT(varchar(10), @date ,101)

select tableloaded, insertdatetime, sourcesystemdatetime, FriendlyDescription
from dbo.tbl_loadSourcedates_dttm
where CONVERT(varchar(10), insertdatetime, 101) = @vardate
谢谢
Dhiren

您可能缺少了存储过程定义末尾的
结尾
,而您忽略了向我们显示它。如果我附加

create proc foo
as
begin

到您发布的代码的开头。

您有这个吗

CREATE PROCEDURE GetCurrentLoadDate

AS
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;

    -- Insert statements for procedure here
    declare @date datetime

declare @vardate varchar(10)

set @date=getDate()

set @vardate=CONVERT(varchar(10), @date ,101)

select tableloaded,insertdatetime,sourcesystemdatetime,FriendlyDescription

from dbo.tbl_loadSourcedates_dttm

where CONVERT(varchar(10), insertdatetime ,101)=@vardate
END
GO

因为在我看来,您在声明proc时遗漏了一些东西,因为您在第一行就遇到了语法异常。

您能展示一下您的存储过程create SQL吗?它的其余部分在哪里?错误在第23行,这比那么多行要少。是的,向我们展示不起作用的代码可能比向我们展示起作用的代码更重要。此外,将日期列转换为varchar也是一种糟糕的做法。您应该使用范围
set@date=DateDiff(Day,0,GetDate())。。。其中insertdatetime>=@date和insertdatetime<@date+1
。您是正确的。我的错。我不知道出了什么问题,因为END是在创建sp时输入的defult值。