Announcement

Collapse
No announcement yet.

Hilfe - meine stored procedure will nicht klappen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Hilfe - meine stored procedure will nicht klappen

    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...

  • #2
    Originally posted by UKWB View Post
    SET @freie_Zeitraeume = @freie_Zeitraeume&@erster_Tag&'-'&@letzter_Tag&';'
    Hier sitzt der Fehler. Du kommst vermutlich aus der VB-Welt? In SQL dient der Operator + für die Verkettung. Allerdings solltest du erster_Tag und letzter_Tag erst in varchar konvertieren. Das geht mit den Funktionen CAST oder CONVERT.

    Gruß,
    Martin

    Comment

    Working...
    X