Announcement

Collapse
No announcement yet.

WHILE Schleife MicrosoftSQL

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

  • WHILE Schleife MicrosoftSQL

    Hi,

    ich als Einsteiger habe folgendes Problem. Und zwar macht diese while Schleife nicht das was ich will:

    Code:
    DECLARE @count INT
    DECLARE @wert INT
    SET @count = 100
    SET @wert = RAND()*100
    
    WHILE @count < 300
    BEGIN
    INSERT INTO Zufall(wert) VALUES(@wert)
    SELECT id,wert FROM Tabelle
    SET @count = @count+10
    SET @wert = RAND()*100
    END
    Im Prinzip läuft die Tabelle nur einmal durch (es wird immer nur 1 Wert eingetragen), aber im Prinzip sollte der Counter bis 300 durchzählen und danach immer den Wert einsetzen und alle Werte ausgeben. Kann mir da jemand weiterhelfen - finde den Fehler irgendwie nicht

    Vielen Dank im Voraus,
    mfG RBS2002

    Edit: Okay, funktioniert doch - der Editor hat die ganzen Resultate in Tabs angezeigt. Naja, ist sicher auch nicht schlecht - aber somit habe ich das nicht gesehen
    Zuletzt editiert von RBS2002; 06.05.2010, 09:15.

  • #2
    @Falk
    Bitte in das Microsoft-Unterforum verschieben.

    Es ist mir schleierhaft, warum eine solche Frage in diesem "allgemeinen" Unterforum landet, obwohl es ein MS-Forum gibt, im obersten Beitrag ausdrücklich darauf hingewiesen wird, was hierher gehört und was nicht, und diese Syntax eindeutig zu MS-SQL gehört.

    Jürgen

    @RBS2002
    Bitte beachte den Hinweis. Ohne diesen hättest du auch ein "Willkommen" erhalten.

    Comment


    • #3
      Wenn du die Schleife nur 20x durchlaufen lassen willst, warum dann dieses Konstrukt mit dem Count? Beginn bei 100, laufen bis 300 step 10?

      Dann nur 1 Wert geschrieben wird, wird wohl an der id liegen. Wann ändert sich diese?
      Christian

      Comment


      • #4
        Es wurde so definiert das eine AUTO ID vergeben wird, diese beginnt bei 100 und wird bei jedem neuen Eintrag um 10 erhöht. Das SELECT ist hier auch nicht ganz vollständig, es käme da noch ein WHERE id=@count ran. Somit wird auch wirklich nur der aktuelle Wert und nichtalle angezeigt (wird gefordert, ich hätte nach der Schleife alles ausgegeben, aber okay - soll nicht mein Problem sein ). Vor dem einfügen der Datensätze wird auch immer geprüft ob die Tabelle bereits existiert und wenn ja gelöscht - deshalb kann man davon ausgehen das die neuen immer bei 100 beginnen. Sonst müsste ich das natürlich anders regeln da die neuen dann eben nicht bei 100 beginnen. Mag sicherlich alles einfacher gehen, aber es funktioniert und das ist die Hauptsache

        Aber danke für alle Tipps

        Comment


        • #5
          Irgendwie erscheint es sinnvoll, bei einer Frage den kompletten Code zu bekommen und nicht nur ein Auszug......
          Christian

          Comment


          • #6
            [highlight=SQL]DECLARE @count INT
            DECLARE @wert INT
            SET @count = 100
            SET @wert = RAND()*100

            WHILE @count < 300
            BEGIN
            print @count;
            SET @count = @count+10;
            SET @wert = RAND()*100;
            END[/highlight]
            Liefert mir genau 20 Print-Ausgaben; es funktioniert also.
            Olaf Helper

            <Blog> <Xing>
            * cogito ergo sum * errare humanum est * quote erat demonstrandum *
            Wenn ich denke, ist das ein Fehler und das beweise ich täglich

            Comment

            Working...
            X