基本的には、オラクルのビジネスレポート(クエリ)を作成して、FREQUENT_FLYERテーブルから情報を抽出しました。マイルの残高が10000以上20000未満で、MileageExpDateがPL/SQLエラーORA-01403:データが見つかりません。予期しない結果を受け取っていません
SELECT F.FPASSENGERID, P.First, P.Last, F.FREQFLYERNUM, F.FREQFLYERMILEAGE,
F.MILEAGEBALANCE, F.MILEAGEEXPDATE
FROM FREQUENT_FLYER F
INNER JOIN PASSENGER P
ON F.FPassengerID = P.PassengerID
WHERE MileageBalance >= 10000 AND F.MILEAGEBALANCE <= 20000
AND MileageExpDate > '01/OCT/2017';
ここでは、そのクエリの結果を示します。それはただ一つの記録を返すべきです。
私は、ストアドプロシージャの周りしようとしている、と私はその一つのレコードに基づいて情報を返すために店の手続きを期待していストア手順
--First Stored Procedure--
CREATE OR REPLACE PROCEDURE sp_GetMileageBalance
IS --Code declaration section--
--variables to store column values returned from select into
fPassengerID VARCHAR2(10);
pFirst VARCHAR2(20);
pLast VARCHAR2(20);
fFreqflyernum NUMBER (10);
fFreqflyerMileage NUMBER (7);
fMileagebalance NUMBER (7);
fMileageExpDate DATE;
MileageExpDate DATE;
MileageStart NUMBER (7);
MileageEnd NUMBER (7);
MileageBalance NUMBER (7);
BEGIN --Code execution section
--executing select into Query assign to variable
MileageExpDate := '01/OCT/2017';
MileageStart := 10000;
MileageEnd := 20000;
SELECT F.FPASSENGERID, P.First, P.Last, F.FREQFLYERNUM, F.FREQFLYERMILEAGE,
F.MILEAGEBALANCE, F.MILEAGEEXPDATE
INTO fPassengerID,
pFirst,pLast,fFreqflyernum,fFreqflyerMileage,fMileagebalance,fMileageExpDate
FROM FREQUENT_FLYER F
INNER JOIN PASSENGER P
ON F.FPassengerID = P.PassengerID
WHERE MileageBalance >= MileageStart AND F.MILEAGEBALANCE <= MileageEnd
AND MileageExpDate > MileageExpDate;
--Displaying the results
DBMS_OUTPUT.PUT_LINE ('CUSTOMER INFORMATION: ');
DBMS_OUTPUT.PUT_LINE ('The Frequent Flyer PassengerID is: ' ||fPassengerID);
DBMS_OUTPUT.PUT_LINE ('First Name of passenger is: ' ||pFirst);
DBMS_OUTPUT.PUT_LINE ('Last Name of passenger is: ' ||pLast);
DBMS_OUTPUT.PUT_LINE ('Frequent Flyer number of passenger is: ' ||fFreqflyernum);
DBMS_OUTPUT.PUT_LINE ('Frequent Flyer Mileage of Passenger is: ' ||fFreqflyerMileage);
DBMS_OUTPUT.PUT_LINE ('Frequent Flyer Balance of passenger is: ' ||MileageBalance);
DBMS_OUTPUT.PUT_LINE ('Mileage expiration date of passenger is: ' ||MileageExpDate);
END sp_GetMileageBalance;
にそのクエリを変換することを決めました。 代わりに、これは私が得るものです。
Procedure SP_GETMILEAGEBALANCE compiled
Error starting at line : 57 in command -
BEGIN sp_GetMileageBalance; END;
Error report -
ORA-01403: no data found
ORA-06512: at "SYSTEM.SP_GETMILEAGEBALANCE", line 29
ORA-06512: at line 1
01403. 00000 - "no data found"
*Cause: No data was found from the objects.
*Action: There was no data from the objects which may be due to end of fetch
なぜ私はこの結果を得ているのか分かりません。私がクエリを実行したのと同じ情報が得られるはずです。
ことの一つは、PROCであなたのMileageStartが整数であるということです、そして、あなたのSQLには文字です。 –