Ich muss eine PL/SQL-Abfrage erstellen, die die Fahrzeugnummer, den Fahrzeugtyp und die Anzahl der aktuellen Lieferungen mit dem Fahrzeug anzeigt. Und wenn die VIN_NUMBER eine Anzahl von 2 oder mehr hat, dann erfordert sie eine Inspektion. Ich weiß nicht, wie man die Zählung funktioniert oder wo genau es in eine PL/SQL-Abfrage eingefügt wird, und ich brauche auch eine Anleitung, wie man die if-und-else-Aussagen darüber macht, ob das Fahrzeug überprüft werden muss oder nicht .Wie zähle ich in PL/SQL? Abfrage
Die VIN_NUMBER (wird auch für die Zählung verwendet) kommt aus der Tabelle DRIVER_DELIVERIES und der VEHICLE_TYPE kommt aus der Fahrzeug Tabelle.
Hier ist mein Code so weit:
DECLARE
VINNUM VARCHAR2(20);
VEH VARCHAR2(30);
INSPECTION VARCHAR2(30);
CNT NUMBER(2);
BEGIN
FOR i IN
(
SELECT
VIN_NUMBER,
VEHICLE_TYPE,
INSPECTION,
COUNT(*) CNT
INTO
VINNUM, VEH
FROM
DRIVER_DELIVERIES,
VEHICLE
WHERE DRIVER_DELIVERIES.VIN_NUMBER = VEHICLE.VIN_NUMBER
GROUP BY
VIN_NUMBER,
VEHICLE_TYPE,
INSPECTION
)
LOOP
IF i.CNT >= 2 THEN
DBMS_OUTPUT.PUT_LINE('VIN NUMBER : ' ||I.VIN_NUMBER);
DBMS_OUTPUT.PUT_LINE('VEHICLE : ' ||I.VEHICLE_TYPE);
DBMS_OUTPUT.PUT_LINE('DELIVERY COUNT: ' ||I.CNT);
DBMS_OUTPUT.PUT_LINE('INSPECTION : ' ||I."Inspection Required");
if count <2 THEN
DBMS_OUTPUT.PUT_LINE('VIN NUMBER : ' ||I.VIN_NUMBER);
DBMS_OUTPUT.PUT_LINE('VEHICLE : ' ||I.VEHICLE_TYPE);
DBMS_OUTPUT.PUT_LINE('DELIVERY COUNT: ' ||I.CNT);
DBMS_OUTPUT.PUT_LINE('INSPECTION : ' ||I."Inspection Not Required");
END IF ;
END LOOP;
END;
Fehlerbericht - ORA-06550: Zeile 41, Spalte 7: PLS-00103: Fand das Symbol "LOOP", wenn eines der folgenden erwartet:
wenn 06550. 00000 - "Zeile% s, Spalte% s: \ n% s" * Ursache: Normalerweise ein PL/SQL-Kompilierungsfehler. * Aktion:
Hier ist die Probenergebnisse, die ich haben sollte:
VIN-Nummer: 1ZA55858541
FAHRZEUG: Cutaway van Chassis
DELIVERY COUNT: 2
Inspektion: Überprüfung erforderlich
VIN-Nummer: 1ZA35858543
FAHRZEUG: Medium Standard LKW
DELIVERY COUNT: 1
Prüfung: Prüfung nicht erforderlich
VIN-Nummer: 1ZA15851545
FAHRZEUG: Pritsche
DELIVERY COUNT: 1
Prüfung: Prüfung NICHT
ERFORDERLICHVIN-Nummer: 1ZA35868540
FAHRZEUG: Cutaway van Chassis
DELIVERY COUNT: 1
Prüfung: Prüfung NICHT ERFORDERLICH
Es gibt wirklich nichts auf Google für eine Zählung in pl/SQL für Oracle? – dfundako
Ich habe zuerst google versucht, aber ich muss wissen, wie man den Count nach VIN_NUMBER, VEHICLE_TYPE hinzufügt, weil, wenn ich versuche, es selbst zu tun, ich einen Fehler bekomme und die Tutorials, die ich verwendet habe, sind nur eine Zeile Wählen Sie Count ___ Anweisungen. Ich denke, ich muss nach dem ersten noch eine Auswahl treffen, damit das richtig funktioniert? –
Dies sieht aus wie etwas, was Sie in SQL tun können, sollte keine PL/SQL-Prozedur benötigt werden. Wann immer eine SQL-Lösung möglich ist, sollte sie bevorzugt werden. Wenn Sie uns die Datenstruktur (Tabelle oder Tabellen zum Speichern der Eingabedaten mit Spaltennamen und -typen, wie Sie sie in SQL * Plus mit DESCRIBE erhalten konnten) zeigen, können wir Ihnen bei einer SQL-Abfrage helfen. Frage aber ... es kann nicht genug sein, Fahrzeuge mit 2 oder mehr Lieferungen zu finden. Sollten das nicht 2 oder mehr Lieferungen SEIT DER LETZTEN INSPEKTION sein? Also müssen Sie auch irgendwo Daten über Inspektionen haben. –
mathguy