Stored Procedure Problem

Dieses Thema Stored Procedure Problem im Forum "Windows XP Forum" wurde erstellt von Hansis, 15. Sep. 2005.

Thema: Stored Procedure Problem Ich bin neu auf dem Gebiet des SQL-Servers und Stored Procedures. Habe mir folgendes zusammengestrickt: ALTER...

  1. Ich bin neu auf dem Gebiet des SQL-Servers und Stored Procedures.
    Habe mir folgendes zusammengestrickt:

    Code:
    ALTER PROCEDURE dbo.hwsw_sp_checklicencestatus
    AS
    declare @count_pc smallint
    declare @count_sw tinyint
    declare @softwarename varchar(255)
    
    while exists (SELECT dbo.hwsw_Software.Softwarename, dbo.hwsw_Lizenzart.Lizenzart FROM dbo.hwsw_Software INNER JOIN dbo.hwsw_Lizenzart ON dbo.hwsw_Software.Lizenzart = dbo.hwsw_Lizenzart.lfdNr WHERE (dbo.hwsw_Lizenzart.Lizenzart =->Lizenzpflichtig'))
        begin
            select @Softwarename = Softwarename from dbo.hwsw_Software
            INSERT INTO dbo.test (Softwarename) VALUES (@Softwarename)
            print @Softwarename
            set @count_pc = (SELECT COUNT(Softwarename) FROM dbo.hwsw_installierte_Software WHERE Softwarename=@softwarename)
            IF EXISTS (SELECT COUNT(Softwarename) FROM dbo.hwsw_Software WHERE Softwarename=@softwarename)
                begin
                    UPDATE dbo.hwsw_Software SET Lizenzen_verwendet = @count_pc WHERE Softwarename=@softwarename
                end
            ELSE
               begin
                   INSERT into dbo.hwsw_Software (Softwarename, Lizenzen_verwendet, Lizenzen_Datum) values (@softwarename, @count_pc, GETDATE())
               end
        end
    Db: Ich möchte alle DS der TAbelle hwsw_Software durchgehen, wo Lizenzpflichtig drinnen steht. Dann schaue ich in der Tabelle hwsw_installierteSoftware mit dem Count-Befehl nach, um herauszufinden, wie oft ein Datensatz mit der Software aus der vorigen Tabelle vorkommt. Denn diesen Wert möchte ich in die erste Tabelle (Software) eintragen.
    Problem: Nur bricht bei mir die Schleife nicht ab. Und der Befehl select @Softwarename = Softwarename from dbo.hwsw_Software
    scheint auch nicht zu funktionieren.

    Wo ist mein Fehler?

    Danke
    Hansi


    verschoben aus Server-Betriebssysteme und -Anwendungen
     
  2. Hallo!

    Habe es jetzt soweit geschafft, daß der Name des aktuellen Datensatzes aus der Tabelle ausgelesen wird.
    Das einzige Problem ist jetzt noch, daß es eine Endlosschleife ist. Wie muss ich vorgehen, daß ich zum nächsten Datensatz komme?

    Hansi

    Code:
    ...
    while exists (SELECT *FROM dbo.hwsw_Software INNER JOIN dbo.hwsw_Lizenzart ON dbo.hwsw_Software.Lizenzart = dbo.hwsw_Lizenzart.lfdNr WHERE (dbo.hwsw_Lizenzart.Lizenzart =->Lizenzpflichtig'))
       begin
           select @Software = Softwarename from dbo.hwsw_Software
           INSERT INTO dbo.test (Softwarename) VALUES (@Software)
        end
    ...