0

次のエラーが表示されます: ORA-01422: 正確なフェッチは、要求された行数を超えて返されます ORA-6512

PL/SQLは初めてで、このクエリは標準SQLを介して実行する必要があることはわかっていますが、PL/SQLを使用してこれを達成する方法を見つけようとしています。

郵便番号が「20636」の顧客の合計販売数を返すクエリが必要です

テーブル/入力は次のとおりです。

CREATE TABLE CUSTOMERS
(customerID     INT     PRIMARY KEY,
customerZip     VARCHAR(15) NOT NULL); 

CREATE TABLE SALES
(saleID         INT     PRIMARY KEY,
customerID      INT,
CONSTRAINT SALES_FK1 FOREIGN KEY (customerID) REFERENCES CUSTOMERS(customerID));

INSERT INTO CUSTOMERS (customerID, customerZIP) VALUES (1, '20636');
INSERT INTO CUSTOMERS (customerID, customerZIP) VALUES (2, '20619');
INSERT INTO CUSTOMERS (customerID, customerZIP) VALUES (3, '20650');
INSERT INTO CUSTOMERS (customerID, customerZIP) VALUES (4, '20670');
INSERT INTO CUSTOMERS (customerID, customerZIP) VALUES (5, '20636');

INSERT INTO SALES (saleID, customerID) VALUES (1, 1);
INSERT INTO SALES (saleID, customerID) VALUES (2, 2);
INSERT INTO SALES (saleID, customerID) VALUES (3, 3);
INSERT INTO SALES (saleID, customerID) VALUES (4, 4);
INSERT INTO SALES (saleID, customerID) VALUES (5, 5);

PL/SQL無名ブロック用に書いたコードは次のとおりです。

DECLARE
customerZip INTEGER;
totalSales INTEGER;
BEGIN
SELECT customerID INTO customerZip from CUSTOMERS where customerZip = '20636';
SELECT COUNT(*) INTO totalSales from SALES where customerID = customerZip;
DBMS_OUTPUT.put_line('We sold ' || totalSales || ' Cars to customers in Zip Code ' || customerZip ||'.');
END;
/

「20636」に 2 つの customerZIP 属性を設定せずにこれを実行すると、正常に動作します。郵便番号「20636」の顧客レコードを複数入力するとすぐに、エラーが発生します。

ここで私が間違っていることと、それを修正する方法を説明してもらえますか? ありがとうございました!

役立つ場合の SQL Fiddle リンク: http://sqlfiddle.com/#!4/10fc1

4

1 に答える 1