PL/SQL を使用しています。テーブルにレコードが存在するかどうかを確認したいのですが、存在する場合または存在しない場合を使用してみましたが、例外が発生します。
Select name from nameTable where name = nameFromArgument;
手順が開始され、データベースにない間違った名前を入力すると、エラーが発生し、処理することさえできません
私はこのようなことを試しました:
編集:
申し訳ありませんが、前に置いた選択は単なる例であり、コード全体 [変数の名前については申し訳ありません...] は次のとおりです。
CREATE OR REPLACE
PROCEDURE SELLSTOCKS
( IloscAkcji IN NUMBER
, NazwaAkcji IN VARCHAR2
, IdRachunkuMaklerskiego IN NUMBER
) AS
Bledna_ilosc EXCEPTION;
Bledna_nazwa EXCEPTION;
amount NUMBER;
stocksCash number;
idRachunku number;
stocksOnDealerSide number;
temp number;
tempus akcje_uzytkownika.nazwa % type;
BEGIN
--Select nazwa into tempus from akcje_uzytkownika where nazwa = nazwaakcji;
--dbms_output.put_line(tempus);
dbms_output.put_line('pre');
select nazwa into tempus from akcje_uzytkownika where nazwa = nazwaakcji;
dbms_output.put_line('pre2');
if tempus!=null then
if ( iloscakcji> amount) THEN
raise Bledna_ilosc;
else
select ilosc, cena_sztuki into amount, stockscash from akcje_uzytkownika where nazwa= NazwaAkcji and id_rachunku_maklerskiego= IdRachunkuMaklerskiego;
dbms_output.put_line(amount);
dbms_output.put_line(stockscash);
amount :=amount - iloscakcji;
dbms_output.put_line(amount);
update akcje_uzytkownika set ilosc= amount where nazwa=NazwaAkcji and id_rachunku_maklerskiego= idrachunkumaklerskiego;
stockscash:= iloscAkcji * stocksCash;
dbms_output.put_line(stockscash);
select id_rachunku into idrachunku from rachunek_maklerski where id_rachunku_maklerskiego= idrachunkumaklerskiego;
temp:=SALDOUPDATE(stockscash, idrachunku);
select ilosc into stocksOnDealerSide from akcje where nazwa = nazwaAkcji;
stocksOnDealerSide := stocksondealerside+ iloscakcji;
dbms_output.put_line(stocksOnDealerSide);
update akcje set ilosc = stocksondealerside where nazwa = nazwaAkcji;
end if;
else
dbms_output.put_line('post');
end if;
EXCEPTION
when Bledna_ilosc then
dbms_output.put_line('Bledna ilosc');
when Bledna_nazwa then
dbms_output.put_line('Bledna nazwa');
END SELLSTOCKS;
私はオラクルSQL開発者1.5.5を使用しています
BEGIN
--Select nazwa into tempus from akcje_uzytkownika where nazwa = nazwaakcji;
--dbms_output.put_line(tempus);
dbms_output.put_line('pre');
select nazwa into tempus from akcje_uzytkownika where nazwa = nazwaakcji;
dbms_output.put_line('pre2');
exception when no_data_found then
raise no_data_found;
-- is this the right place?
select ilosc, cena_sztuki into amount, stockscash from akcje_uzytkownika where nazwa= NazwaAkcji and id_rachunku_maklerskiego= IdRachunkuMaklerskiego;
dbms_output.put_line(amount);
dbms_output.put_line(stockscash);
amount :=amount - iloscakcji;
dbms_output.put_line(amount);
if ( iloscakcji> amount) THEN
raise Bledna_ilosc;
else
update akcje_uzytkownika set ilosc= amount where nazwa=NazwaAkcji and id_rachunku_maklerskiego= idrachunkumaklerskiego;
stockscash:= iloscAkcji * stocksCash;
dbms_output.put_line(stockscash);
select id_rachunku into idrachunku from rachunek_maklerski where id_rachunku_maklerskiego= idrachunkumaklerskiego;
temp:=SALDOUPDATE(stockscash, idrachunku);
.........