Sql server 这个简单的SQL有什么问题?当放入一个存储过程时失败,否则无效
当我按原样运行时,它工作得非常好,但将这段代码放入SQL2005中的存储过程失败了 我得到这个错误 Msg 102,15级,状态1,程序GetCurrentLoadDate,第23行。 “@vardate”附近的语法不正确 这个调用可以作为声明工作并返回结果集,但如果放入存储过程,则会失败,这有什么错呢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
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值。