車両の車両番号、車両の種類、および現在車両での配送の数を表示するPL/SQLクエリを作成する必要があります。 VIN_NUMBERのカウントが2以上の場合は、検査が必要です。私はカウントを動作させる方法やPL/SQLクエリに正確に入れる場所を知らないし、車両が検査を必要とするかどうかについてifとelse文を行う方法についていくつかのガイダンスが必要である。PL/SQLクエリでカウントを行う方法
VIN_NUMBER(カウントにも使用されます)はDRIVER_DELIVERIESテーブルからのもので、VEHICLE_TYPEはVehicle Tableからのものです。
ここでは、これまでに私のコードです:
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;
エラーレポート - ORA-06550:行41、列7: PLS-00103:次のいずれかを期待したときにシンボル "LOOP" を発生しました:
は06550.0000 - "行%s、列%s:\ n%s" *原因:通常はPL/SQLコンパイル・エラーです。 処置:
ここで私が持つべきサンプルの結果です:
VIN番号:1ZA55858541
はVEHICLE:カッタウェイバンシャーシ
配信回数:2
検査:検査REQUIREDは
VIN番号:1ZA35858543
VEHICLE:ミディアム標準トラック
配信回数:1
検査:REQUIRED検査NOT
VIN番号:1ZA15851545
VEHICLE:平台トラック
配信回数:1
検査:検査は必須ではありません
VIN番号:1ZA35868540
VEHICLE:カッタウェイバンシャーシ
配信回数:1
検査:検査はありません必要です
Googleでは、pl/sql for Oracleでカウントを行う方法は実際には何もありません。 – dfundako
私はまずGoogleを試しましたが、VIN_NUMBER、VEHICLE_TYPEの後にCountを追加する方法を知っておく必要があります。なぜなら、私自身はエラーが発生し、使用したチュートリアルは1行だけです。Count ___ statements。私はこれが正しく機能するために最初のものの後に別のselect文を実行しなければならないと思いますか? –
これはSQLで実行できるはずのもので、PL/SQLプロシージャは必要ありません。 SQLソリューションが可能な場合はいつでも優先する必要があります。 SQL * PlusでDESCRIBEを使用した場合のように、データ構造(入力データを格納する表または列名および型を示す表)を表示すると、SQL問合せのお手伝いができます。しかし質問...それは2つ以上の配達の車を見つけるのに十分ではないかもしれません。最後の検査以来、2回以上の配送をしてはいけませんか?だから、検査に関するデータもどこかに置いておく必要があります。 –
mathguy