Hallo zusammen,
in meiner Anwendung benötige ich eine Funktion, die aus der Tabelle "ArtikelRent" die Datümer aller Einträge einer bestimmten Seriennummer (identifiziert über den Übergabeparameter @geraet) sortiert ausliest und die jeweils zusammenhängenden Datumsblöcke (Zeiträume) ";"-getrennt in die Variable "@Zeitraeume" schreibt und zurückgibt bzw. eine entsprechende Tabelle "Zeitraeume" schreibt .
Hierzu habe ich die folgende stored procedure geschrieben:
************************************************** **********
CREATE PROCEDURE prodcent_blocks
@geraet VARCHAR(50)
AS
DECLARE @Tag DATETIME
DECLARE @erster_Tag DATETIME
DECLARE @letzter_Tag DATETIME
DECLARE @freie_Zeitraeume varchar(8000)
SET NOCOUNT ON
DECLARE unbelegte_tage CURSOR LOCAL FORWARD_ONLY SCROLL_LOCKS FOR
SELECT Datum FROM ArtikelRent WHERE Status=0 AND tmpwarenkorb=0 AND Seriennummer=@geraet ORDER BY Datum
OPEN unbelegte_tage
FETCH FIRST FROM unbelegte_tage INTO @Tag
SET @erster_Tag = @Tag
SET @letzter_Tag = @erster_Tag
WHILE @@fetch_status = 0
BEGIN
FETCH NEXT FROM unbelegte_tage INTO @Tag
IF @Tag = DATEADD(DAY,1,@letzter_Tag)
BEGIN
SET @letzter_Tag = @Tag
END
ELSE
BEGIN
SET @freie_Zeitraeume = @freie_Zeitraeume&@erster_Tag&'-'&@letzter_Tag&';'
SET @erster_Tag = @Tag
SET @letzter_Tag = @erster_Tag
END
END
DEALLOCATE unbelegte_tage
RETURN @freie_Zeitraeume
************************************************** **********
Ich bin der Meinung, dass die Funktion eigentlich funktionieren müßte, erhalte aber regelmäßig folgenden Syntaxfehler:
Fehler 403:
Ungültiger Operator für datentyp. Operator ist boolean AND, Typ ist datetime.
Einziger Ort, an dem ich diesen Fehler zuordnen könnte, ist das SELECT-statement. Allerdings stimmen alle datentypen: Status ist int, tmpwarenkorb ist int und Seriennummer ist varchar(50).
Kann mir jemand helfen, ich steh auf dem Schlauch...
in meiner Anwendung benötige ich eine Funktion, die aus der Tabelle "ArtikelRent" die Datümer aller Einträge einer bestimmten Seriennummer (identifiziert über den Übergabeparameter @geraet) sortiert ausliest und die jeweils zusammenhängenden Datumsblöcke (Zeiträume) ";"-getrennt in die Variable "@Zeitraeume" schreibt und zurückgibt bzw. eine entsprechende Tabelle "Zeitraeume" schreibt .
Hierzu habe ich die folgende stored procedure geschrieben:
************************************************** **********
CREATE PROCEDURE prodcent_blocks
@geraet VARCHAR(50)
AS
DECLARE @Tag DATETIME
DECLARE @erster_Tag DATETIME
DECLARE @letzter_Tag DATETIME
DECLARE @freie_Zeitraeume varchar(8000)
SET NOCOUNT ON
DECLARE unbelegte_tage CURSOR LOCAL FORWARD_ONLY SCROLL_LOCKS FOR
SELECT Datum FROM ArtikelRent WHERE Status=0 AND tmpwarenkorb=0 AND Seriennummer=@geraet ORDER BY Datum
OPEN unbelegte_tage
FETCH FIRST FROM unbelegte_tage INTO @Tag
SET @erster_Tag = @Tag
SET @letzter_Tag = @erster_Tag
WHILE @@fetch_status = 0
BEGIN
FETCH NEXT FROM unbelegte_tage INTO @Tag
IF @Tag = DATEADD(DAY,1,@letzter_Tag)
BEGIN
SET @letzter_Tag = @Tag
END
ELSE
BEGIN
SET @freie_Zeitraeume = @freie_Zeitraeume&@erster_Tag&'-'&@letzter_Tag&';'
SET @erster_Tag = @Tag
SET @letzter_Tag = @erster_Tag
END
END
DEALLOCATE unbelegte_tage
RETURN @freie_Zeitraeume
************************************************** **********
Ich bin der Meinung, dass die Funktion eigentlich funktionieren müßte, erhalte aber regelmäßig folgenden Syntaxfehler:
Fehler 403:
Ungültiger Operator für datentyp. Operator ist boolean AND, Typ ist datetime.
Einziger Ort, an dem ich diesen Fehler zuordnen könnte, ist das SELECT-statement. Allerdings stimmen alle datentypen: Status ist int, tmpwarenkorb ist int und Seriennummer ist varchar(50).
Kann mir jemand helfen, ich steh auf dem Schlauch...
Comment