0
customer ID
とorder ID
とその他のデータを含むテーブルがあります。レコードが見つからないときに例外を発生する
customer ID
を入力してテーブル内を調べるprocedure
を作成します。
その顧客が存在する場合はorder
の詳細を、 の顧客が存在しない場合はexception
を「顧客が見つかりません」と表示してください。
私はこのコードを持っていますが、正しく動作していないか、この質問に間違ったアプローチをしている可能性があります。
CREATE OR REPLACE PROCEDURE order_details(customer NUMBER)
IS
CURSOR order_cursor IS
SELECT ORDER_ID, ORDER_DATE, TOTAL, CUSTOMER_ID
FROM PRODUCT_ORDER
WHERE CUSTOMER_ID = customer ;
order_row order_cursor%ROWTYPE ;
customer_error EXCEPTION ;
BEGIN
FOR order_row IN order_cursor
LOOP
IF order_cursor%FOUND THEN
dbms_output.put_line ('order id = ' || order_row.ORDER_ID) ;
ELSE
RAISE customer_error ;
END IF;
END LOOP;
EXCEPTION
WHEN customer_error THEN
dbms_output.put_line ('no customer') ;
END;
私は
このラインでの手順を実行した場合の順序は、この顧客のために存在するので、だから私は二つの結果を取得します。私はこのライン
BEGIN
order_details(101);
END;
で手順を実行した場合、その顧客のためのオーダーがないので
と私は何も(いなくても、エラー)を得ることはありません。
私はすでにあまりにも、これに関する問題これを試してみました、私は顧客を持っていないときにはうまく機能しているが、私は顧客を持っている場合、その顧客が複数のオーダーを持っている場合は、それ出力でその顧客の1つの注文のみを表示し、それ以外は表示しません。 –
私はテーブルの中にデータ用の画像をアップロードしています。たとえば、顧客ID = 104のデータを2セット持っていますが、私が提案したコードを使用すると、 –
このケースでは、LOOP-END LOOPと属性%rowcountと%notfoundを使用してすべてのORDER_IDまたは 'no customer'を表示するようにコードを修正しました。 –