Immer Fehler "Falsche syntax in der Nähe '-' " beim ausführen der Gespeicherten Prozedur

Habe ich erfolgreich erstellt eine gespeicherte Prozedur mit zwei Eingabeparameter und zwei Ausgabeparameter. wenn ich ausgeführt, dieses Verfahren, ich erhalte eine Fehlermeldung

Falsche syntax in der Nähe '-'

in der Nähe des ersten Parameters.

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

Dies ist das Ergebnis ausgeführt:

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'

Bin ich immer Fehler in der Nähe von "@StartDate = 2015-04-27," aber wenn ich ausgeführt das SP manuell, indem Sie diese Eingänge mit input-Parameter, die ich bin immer das erwartete Ergebnis.

Hinweis:

Da mein Ruf ist unter 10, ich bin eigentlich nicht screenshot hochladen, die werden mehr nützlich für das Verständnis der Problematik. Bitte lassen Sie mich wissen, wenn Sie weitere Informationen benötigen.

  • Sie denkt Ihr startdate und enddate sind strings und daher brauchen, ' um Sie herum.
  • übergeben Sie Ihre Daten als @StartDate = '2015-04-27',
  • Ja Sie sind korrekt, aber meine Frage ist, wie wird es string? In meinem Proc-ich habe erklärt startdate und enddate mit dem Datentyp 'date' nur?
  • '2015-04-27' ist eine Zeichenkette, die umgewandelt werden Datum übergeben, um eine date-variable. Eine weitere option ist die Verwendung DECLARE @dt DATE = DATEFROMPARTS(2015,04,27) und verwenden Sie dann @dt in Ihrem exec wie @StartDate =@dt
InformationsquelleAutor User | 2015-05-06
Schreibe einen Kommentar