我使用PL/SQL,我想檢查是否在一個表中存在記錄是否存在包含給定詞的記錄,我已經使用,或如果不存在的時候試過,但我以異常結束。如何檢查是否在表
Select name from nameTable where name = nameFromArgument;
當程序開始,我把一個錯誤的名字,這是不是在我得到一個錯誤的數據庫,甚至不能處理它
我已經試過這樣的事情:
PL/SQL check if query returns empty
編輯:
對不起,選擇我已經把之前只是一個例子,整個代碼[對不起的變量名...]我在這兒:
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;
我使用的Oracle SQL Developer 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);
........
你可以發佈您的實際代碼爲你的'select'似乎什麼是失蹤的'into'條款。你還可以發佈你使用的Oracle的錯誤和版本嗎? – Ben