Stored Procedure Problem

  • #1
H

Hansis

Guest
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
...
 
Thema:

Stored Procedure Problem

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.838
Beiträge
707.961
Mitglieder
51.491
Neuestes Mitglied
haraldmuc
Oben