Что не так с этим простым SQL?Сбой, когда положить в хранимую процедуру работает иначе - PullRequest
1 голос
/ 20 сентября 2011

Когда я работал как есть, он прекрасно работает, но поместить этот точный код в хранимую процедуру в SQL 2005 не удается.

Я получаю эту ошибку

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

Ответы [ 2 ]

2 голосов
/ 20 сентября 2011

Вы, вероятно, пропускаете END в конце сохраненного определения процедуры, которое вы забыли показать нам.Я получаю ту же ошибку, если добавляю

create proc foo
as
begin

к началу вашего опубликованного кода.

0 голосов
/ 20 сентября 2011

У вас есть именно это?

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

Потому что мне кажется, что вы что-то упускаете, когда объявляете свой процесс, поскольку вы получаете синтаксическое исключение в самой первой строке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...