SQL Prozedur zeigt nur den 1. Query an

alebec7

Ensign
Registriert
Juni 2008
Beiträge
154
Ich habe eine Prozedur im SQL Server Management Studio 2005 geschreiben, aber er zeigt mir immer nur die Ergebnisse des 1. Select- Befehls an:

Code:
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;

    DECLARE @rows  INT
    -- Insert statements for procedure here
	
	if @PLZ IS NOT NULL 
	
		SELECT v.Nr AS VertreterNr, v.Name, v.Vorname, 
			v.Adresse, v.Telefon, v.Fax, v.Mobil, 
			v.PLZ AS VPLZ, v.Ort 
		FROM Vertreter v, Kunde k
		WHERE v.ID=k.VertreterID and k.KundenNr=@Kundennummer
		ORDER BY v.Nr	
		
		set @rows = @@rowcount
                if (@rows = 0)
		
			SELECT v.Nr AS VertreterNr, p.PLZ, v.Name, v.Vorname, 
				v.Adresse, v.Telefon, v.Fax, v.Mobil, 
				v.PLZ AS VPLZ, v.Ort 
			FROM Vertreter v, PLZ p, VertreterPLZ vp 
			WHERE v.Id=vp.VertreterID  and p.ID=vp.PLZId and p.PLZ=@PLZ 
			ORDER BY v.Nr							
END

Vertausche ich die Select- Befehle werden ebenfalls nur die Ergebnisse des 1. Querys angezeigt.
 
if (@rows = 0)

muss das so heissen, oder ginge auch

if(@rows IS NULL)

? Evtl. gibts hier probleme dass durch die if abfrage der fall einfach nie eintritt, dadurch kriegst du nichts angezeigt
 
In @rows steht die Zahl der Zeilen der vorausgegangen Abfrage. Mein Problem ist halt, dass er nur den obersten Select- Befehl ausgibt und nicht den 2.
 
d.h. wenn du die zweite abfrage durch

if(rows = 0)
SELECT * FROM Vertreter v;

ersetzt wird auch nichts ausgegeben?

In so nem Fall wäre halt wie gesagt deine If Bedingung nie erfüllt, und müsste entsprechend angepasst werden. Mehr fällt mir jetzt auch nicht dazu ein.
 
Mit der If- Bedingung ist alles ok. Er geht ja in den IF- Block...

Ich versuche jetzt mit:

Code:
SELECT COUNT(v.Nr) AS VertreterNr
	FROM Vertreter v, Kunde k
	WHERE v.ID=k.VertreterID and k.KundenNr=@Kundennummer

Zuerst zu prüfen, ob es Zeilen gibt. Aber wie kan ich in meiner If- Bedingung sagen:

If (VertreterNr = 0) ???
 
Zurück
Oben