Dies ist aus einer Teststudie Leitfaden. Was ist der Zweck dieser Abfrage? Ist diese Druckfunktion ein Teil der while-Schleife oder läuft sie nur nach der while-Schleife?Was macht diese Abfrage?
Ist das der Zweck, Rechnungen zwischen 1.000 und 200.000 Dollar zu löschen?
Wird die while-Schleife jede tatsächliche Schleife durchlaufen? Die Schleife wird brechen, wenn die Gesamtsumme über 200.000 ist .... die Schleife wird brechen, wenn die Rechnungssumme unter 1.000 ist .... wird es auch enden, wenn die Summe zwischen 1.000 und 200.000 korrekt ist?
USE AP
SELECT * INTO #InvoiceCopy FROM Invoices
DECLARE @InvoiceID int, @InvoiceTotal money
DECLARE @Total money
SET @Total = 0
WHILE @Total + (SELECT TOP 1 InvoiceTotal
FROM #InvoiceCopy
ORDER BY InvoiceTotal DESC) <= 200000
BEGIN
SELECT TOP 1 @InvoiceID = InvoiceID, @InvoiceTotal = InvoiceTotal
FROM #InvoiceCopy
ORDER BY InvoiceTotal DESC
IF @InvoiceTotal < 1000
BREAK
ELSE
BEGIN
SET @Total = @Total + @InvoiceTotal
DELETE FROM #InvoiceCopy
WHERE InvoiceID = @InvoiceID
END
END
PRINT 'Total: $' + CONVERT(varchar, @Total, 1)
Gute Trauer ein Studienführer für was ??? Dies ist ein hervorragendes Beispiel dafür, warum wir statt dieser schrecklichen RBAR (Reihe nach quälender Reihe) Art von Logik satzbasierte Logik verwenden wollen. Und es ist extrem brüchig. Es könnte in einer Endlosschleife enden, wenn der konstruierte Wert nicht überschritten wird. Ihr Professor sollte wirklich Datenbanken lernen, bevor sie versuchen, Menschen zu unterrichten. –
Lol ... wie fühlst du dich wirklich? Ja ich stimme zu. Um das Ganze noch schlimmer zu machen, ist es ein Online-Kurs, der sich in diesem speziellen Fall ziemlich gut selbst beibringt. Es ist eine lästige Pflicht. Gott sei Dank für den Stapelüberlauf. –
Ich fühle deinen Schmerz. Viel zu oft lehren Professoren schlechte Methoden mit erzwungenen Beispielen. Es verursacht Schmerz für ihre Studenten und ihre zukünftigen Arbeitgeber, um die archaischen Denkweisen beizubringen, die neuen Studenten beigebracht werden. Woran Sie gerade arbeiten, entspricht im Wesentlichen einer laufenden Summe. Abhängig von der Version von SQL Server gibt es bessere Lösungen als eine While-Schleife. –