Ви використовуєте застарілий браузер. Цей та інші сайти можуть відображатися в ньому некоректно. Необхідно оновити браузер або спробувати використовувати https://www.google.com/chrome/
Oracle
🟡 05:31 Відбій тривоги в Харківська область.Зверніть увагу, тривога ще триває у:- Куп’янський район- Харківський район- Липецька територіальна громада- Вовчанська територіальна громада#Харківська_область
Вот что у меня получилось, но там где-то ошибка, помогите найти
create or replace procedure p1 is
maxp number;
minp number;
begin
select max(price) into maxp from goods;
select min(price) into minp from goods;
dbms_output.putline('min = ' ||minp || ' max = ' ||maxp);
create or replace function f1 what varchar2 return number is
temp number;
begin
if what = 'min' then
select min(price) into temp from goods;
return temp;
elsif what = 'max' then
elsif what = 'min' then
endif;
end;
create or replace procedure p1
as
maxp number;
minp number;
begin
select max(price) into maxp from goods;
select min(price) into minp from goods;
dbms_output.put_line('min = ' ||minp || ' max = ' ||maxp);
end;
/
create or replace function f1(what varchar2) return number
as
temp number;
begin
if what = 'min' then
select min(price) into temp from goods;
elsif what = 'max' then
select max(price) into temp from goods;
end if;
return temp;
end;
/
create or replace procedure p1
as
maxp number;
minp number;
begin
select max(price) into maxp from goods;
select min(price) into minp from goods;
dbms_output.put_line('min = ' ||minp || ' max = ' ||maxp);
end;
/
create or replace function f1(what varchar2) return number
as
temp number;
begin
if what = 'min' then
select min(price) into temp from goods;
elsif what = 'max' then
select max(price) into temp from goods;
end if;
return temp;
end;
/
мдя... ну и основы...
create or replace procedure p1
as
maxp number(28,6);
minp number(28,6);
begin
select max(price), min(price)
into maxp, minp
from goods;
dbms_output.put_line('min = ' ||minp || ' max = ' ||maxp);
end;
/
create or replace function f1(what varchar2) return number
as
temp number(28,6);
begin
if lower(what) = 'min' then
select min(price) into temp from goods;
elsif lower(what) = 'max' then
select max(price) into temp from goods;
end if;
return temp;
end;
/
так наверное лучче А то кто его знает - что там за цены и в чем...
Лучше тем, что как-то конкретизирует параметры дробных переменных + решает ситуацию, когда передается вид экстремального значения в разных регистрах + если не ошибаюсь, select min(a), max(a) выполняется в один проход, в отличие от двух запросов подряд
Кстати, надо было бы в if добавить:
else
return null;
end if;
Почему же не надо? Вроде как не рекомендуется возвращать неинициализированную переменную из функции. А в случае, если в ф-цию передадут левое значение параметра what - то как раз и произойдет возврат неинициализированной переменной temp
вполне вероятно
Но по-моему все же рекомендуется не возвращать не инициализированные явно переменные. Может это просто хороший тон конечно... Вобщем, в предложении двумя постами выше слово "нужно" необходимо заменить на "стоит" Пусть так.