2015-05-06 6 views
2

Я успешно создал хранимую процедуру, используя два входных параметра и два выходных параметра. когда я выполнил эту процедуру, я получаю сообщение об ошибкеПолучение ошибки «Неверный синтаксис рядом с« - »при выполнении хранимой процедуры

Неправильный синтаксис около «-»

вблизи первого параметра.

ALTER PROCEDURE [dbo].[Agent_interactions_report] 
(
@StartDate date, 
@EndDate date, 
@ERRORCODE AS INT OUTPUT, 
@ERRORDESCRIPTION AS VARCHAR(4000) OUTPUT 
) 
AS 
BEGIN 
    SET NOCOUNT ON; 

    begin Try 

    select 
     cast([CallStartTime] as Date) as Date, 
     [AgentID] as [Agent ID], [Agent_Name] as [Agent name], 
     [CustomerID] as [Cust-ID], [Account_Number] as [Account number], 
     [Transaction_Des] as [Transaction], 
     CallStartTime AS [Call start time], 
     CallEndTime AS [Call end time], CallID as [Call ID] 
    from 
     [TBL_AGENT_TRANSACTIONS] 
    where 
     cast(CallStartTime as DATE) >= @StartDate 
     and cast(CallEndTime as Date) <= @EndDate 
end Try 
begin catch 
     SET @ERRORCODE = ERROR_NUMBER() 
     SET @ERRORDESCRIPTION = ERROR_MESSAGE() 
end catch 

END 

Это исполняемая результат:

DECLARE @return_value int, 
     @ERRORCODE int, 
     @ERRORDESCRIPTION varchar(4000) 

EXEC @return_value = [dbo].[Agent_interactions_report] 
     @StartDate = 2015-04-27, 
     @EndDate = 2015-04-27, 
     @ERRORCODE = @ERRORCODE OUTPUT, 
     @ERRORDESCRIPTION = @ERRORDESCRIPTION OUTPUT 

SELECT @ERRORCODE as N'@ERRORCODE', 
     @ERRORDESCRIPTION as N'@ERRORDESCRIPTION' 

Я получаю ошибку возле «@StartDate = 2015-04-27», но когда я выполнил SP вручную, давая эти входы к входные параметры я получаю ожидаемый результат.

Примечание:

Поскольку моя репутация ниже 10 я не должен загрузить скриншот, который будет более полезным для понимания вопроса. Пожалуйста, дайте мне знать, если вам нужна дополнительная информация.

+2

Это думает, что ваш исходный и конечный результат - это строки и, следовательно, «вокруг». –

+1

передайте свои даты как '@StartDate = '2015-04-27'', – ughai

+0

@Allan Да, вы правы, но я сомневаюсь, что это будет строка? В моем Proc я объявил startdate и enddate только с типом данных 'date'? – User

ответ

7

При обработке дат таким образом вам необходимо инкапсулировать их в кавычки! Он не может определить тип данных, которые у вас есть, и полагает, что вы отправляете строку.

+0

Спасибо Дэвиду за ваше четкое объяснение. – User

+0

Поскольку у меня недостаточно репутации, я не могу повышать, но я могу принять ответ :) – User

+0

Это просто отлично. Добро пожаловать в SO. –

2

Оценить это по всему миру?

@StartDate = '2015-04-27', 
     @EndDate = '2015-04-27', 
+0

Я собираюсь предположить, что «перевернутые запятые» означают кавычки ... Редактирование ответа, чтобы указать это. –

Смежные вопросы