Announcement

Collapse
No announcement yet.

Fetch anweisung unter MSSQL 2000

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

  • Fetch anweisung unter MSSQL 2000

    Hallo!
    Ich arbeite unter MSSQL2000 und soll Kundennummern generieren. die Kundennummern sind so aufgebaut: CL-000123
    Jetzt sind in meiner Tabelle einige Felder leer und andere gefüllt. in die leeren felder sollen nun ab der höchsten vorhandenen zahl werte eingefügt werden. dazu hab ich mir gedacht nehme ich nen fetch befehl und hab mir diesen zusammengebastelt:

    declare @x varchar
    declare @y varchar
    declare Kundennumm_cursor cursor for
    select Kundennumm
    from KUNDE

    open Kundennumm_cursor

    fetch next from Kundennumm_cursor
    into @y
    while @@fetch_status = 0
    begin
    if (@y = '' or @y is null)
    begin
    set @y = (select max (right (Kundennumm, 5))from KUNDE)
    set @x = @y + 1
    set @y =@x
    end
    fetch next from Kundennumm_cursor
    into @y
    end

    close Kundennumm_cursor
    deallocate Kundennumm_cursor
    go

    aber er läuft nicht. ich denke dass ich de Wert aus @y an Kundennumm zurückgeben muss, habe aber keinen schimmer wie.
    übrigens ist das mein erster versuch mit diesem Befehl, habt also ein wenig nachsicht mit mir.

    Jenni

  • #2
    Hallo,

    eine Lösung für dieses Problem könnte so aussehen:

    Beispieldatenbank
    <pre>
    USE tempdb
    GO

    CREATE TABLE Jenni (
    RecNo INTEGER NOT NULL IDENTITY PRIMARY KEY,
    Kundennummer CHAR(9))
    GO

    INSERT INTO Jenni (Kundennummer) VALUES ('CL-000123')
    INSERT INTO Jenni (Kundennummer) VALUES ('')
    INSERT INTO Jenni (Kundennummer) VALUES ('CL-000125')
    INSERT INTO Jenni (Kundennummer) VALUES ('')
    INSERT INTO Jenni (Kundennummer) VALUES ('')
    INSERT INTO Jenni (Kundennummer) VALUES ('CL-000126')
    GO
    </pre>

    T-SQL-Stapelanweisungen für den Cursor:
    <pre>
    declare @id integer
    declare @y char(9)
    declare @newY char(9)
    declare Kundennumm_cursor cursor for select RecNo,Kundennummer from Jenni
    open Kundennumm_cursor
    select @newY = (SELECT MAX(CAST(Right(Kundennummer, 5) AS INTEGER)) FROM Jenni)
    fetch next from Kundennumm_cursor into @id, @y
    while @@fetch_status = 0
    begin
    if (@y = '' or @y is null)
    begin
    set @newY = @newY + 1
    UPDATE Jenni SET Kundennummer = @newY WHERE RecNO = @id
    end
    fetch next from Kundennumm_cursor into @id, @y
    end
    close Kundennumm_cursor
    deallocate Kundennumm_cursor
    </pre>
    Ergebnis:
    <pre>
    RecNo Kundennummer
    ----------- ------------
    1 CL-000123
    2 127
    3 CL-000125
    4 128
    5 129
    6 CL-000126

    (6 row(s) affected)
    </pre>
    &#10

    Comment


    • #3
      Danke, danke, danke,......
      ich hatte es fast, das einzige was mir noch fehlte war die zuordnung über die id. ich bin überhauptnicht auf die idee gekommen, dass sowas auch geht. ich hatte das problem mit der convertierung über einen substring gelöst.

      Jenn

      Comment

      Working...
      X