내 코드를 실행하면 코드 내부의 문안에 관계없이 모든 사례 조건을 통과 한 것처럼 보입니다. 내가 달성하기 위해 노력하고있어사례 사용자 (PLSQL, 익명 블록)에서 읽을 때 조건이 올바르게 실행되지 않을 때
는 :
- 나는 사용자가 간단한 정수 읽고 그가 0 값을 입력하면, 나는 프로그램을 종료하고
loop
를 종료하고 싶습니다.- 이 프로그램은 정수에 대한 사용자 요청 (:
- 이
case
실행 예제의 모든
when
문을 입력합니다 : 나는이 프로그램을 실행하면 어떻게됩니까 - 이
- 이 프로그램은 정수에 대한 사용자 요청 (:
0/1/2/3)
을 실행에 계속 시도하지 않은
시 세부 사항 (라인 32)를 물어 코드를 개발했습니다 :
SET SERVEROUTPUT ON;
declare
poli_name poli.name%type;
poli_lat poli.lat%type;
poli_lon poli.lon%type;
counter int :=1;
cursor poli_c is select name,lat,lon from poli;
number_of_cities int;
epilogi number;
begin
dbms_output.put_line('Select 1 To Enter Details');
dbms_output.put_line('Select 2 To View All The Details');
dbms_output.put_line('Select 3 To Run Group Algorithm');
dbms_output.put_line('Select 0 To Exit The Programm');
epilogi:=&Epilogi;
loop
case epilogi
when 0 then
dbms_output.putline('Exiting Programm...');
exit;
when 1 then
name_c := &Enter_City_Name; --line 32
lat := &Enter_City_Lat;
lon := &Enter_City_Lon;
if lon >= -180 and lon <= 180 and lat >= -90 and lat <= 90 then
select count(id) into number_of_cities from poli;
if number_of_cities <= 15 then
insert into poli values(counter,name_c,lat,lon);
dbms_output.putline('City Successfully Added');
else
dbms_output.putline('Cities Can Not Be More Than 15');
end if;
else
dbms_output.putline('Wrong Longitude Or Latidute Values');
end if;
when 2 then
open poli_c;
fetch poli_c into poli_name,poli_lat,poli_lon;
dbms_output.put_line('Onoma Polis:'||poli_name);
dbms_output.put_line('Latidute '||poli_name||': '||poli_lat);
dbms_output.put_line('Longtidute '||poli_name||': '||poli_lon);
close poli_c;
when 3 then
null;
else
dbms_output.put_line('Wrong input - try again...');
end case;
counter := counter+1;
epilogi := &Epilogi;
end loop;
end;
내가 잘못하고 있습니까? 그게 뭐야? 시간 내 줘서 고마워.
본 내용을 잘 모르겠다. 귀하의 블록은 실행 된 적이 없습니다. 대체 변수 ('&'로 시작하는 변수)는 SQL + * Plus 또는 사용중인 인터페이스 (SQL Developer, Toad 등)에 의해 사용자가 제공 한 값으로 대체됩니다 ** ** 코드를 보내기 전에 완료, ** ALL ** 변수 - 구문 분석 및 실행을위한 PL/SQL 엔진. & Epilogi에 대해 첫 번째 값을 제공하면 SQL \ * Plus가 계속해서 다른 대체 변수의 값을 묻습니다. 실행을 시작하지 않기 때문에 코드는 CASE 문을 입력하지 않습니다! – mathguy
그 문제를 해결할 방법이 있습니까? –
아니요. pl/sql은 사용자와의 상호 작용을위한 것이 아닙니다. 이를 처리하기 위해 추가 레이어가 필요합니다. Answers에 대한 코멘트에서 Steven Feuersteins는 ApEx 페이지를 제안합니다. 또는 익숙한 다른 응용 프로그램을 사용하면 사용자 인터페이스를 만들 수 있습니다. 그것은 pl/sql이 필요한 것이 아닙니다. – mathguy