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 VerwendungDECLARE @dt DATE = DATEFROMPARTS(2015,04,27)
und verwenden Sie dann@dt
in Ihremexec
wie@StartDate =@dt
Du musst angemeldet sein, um einen Kommentar abzugeben.
Beim Umgang mit Daten auf diese Weise müssen Sie Kapseln Ihnen in Anführungszeichen! Es fehlschlägt, um den Typ der Daten, die Sie haben, und glaubt, dass Sie senden einen string.
Versuchen Sie Anführungszeichen um die Termine?