Функция PL / SQL возвращает минимальное число - PullRequest
0 голосов
/ 06 февраля 2020

Как написать простую функцию, которая возвращает минимальную зарплату. Параметры IN: salary1, salary2, salary3 (9240, 9750, 8320), и запрещено использовать готовые функции.

У меня нет кода вообще. Я очень новичок в этом и пытаюсь чему-то научиться.

Ответы [ 2 ]

1 голос
/ 06 февраля 2020

Функция уже существует в PL SQL. Проверьте это здесь . Есть хорошие примеры того, как его использовать

UPD: согласно Павлу, упомянутому здесь, пара примеров

SQL:

select least(100, 1, 200) from dual; -- returns 1

PL SQL :

create or replace procedure get_min(s1 number, s2 number, s3 number)
is
  min_sal number := 0;
begin
  min_sal := least(s1, s2, s3);
  dbms_output.put_line('min: ' || min_sal);
end;
0 голосов
/ 06 февраля 2020

, если не разрешено использовать существующие функции, вы можете сделать это, используя If then else

create or replace function get_min(s1 number, s2 number, s3 number)
return number
is
  min_sal number := 0;
begin
  ---------------------
  -- if the first value is less than the second value
  -- , then the first value is the min of both values
  -- otherwise the second value is min
  if s1 < s2 then
    min_sal := s1;
  else 
    min_sal := s2;
  end if;

  ------------------------------------
  -- now you check the new min value against the third value.
  if s3 < min_sal then
    min_sal := s3;
  end if;
  dbms_output.put_line('min: ' || min_sal);

  return min_sal;
end;
/

DECLARE 
  v_result NUMBER;
BEGIN

  v_result :=  GET_MIN(1, 1, 1);
  v_result :=  GET_MIN(2, 1, 1);
  v_result :=  GET_MIN(1, 2, 1);
  v_result :=  GET_MIN(1, 1, 2);
  v_result :=  GET_MIN(2, 2, 1);
  v_result :=  GET_MIN(1, 2, 2);
  v_result :=  GET_MIN(1, 2, 3);
  v_result :=  GET_MIN(2, 1, 3);
  v_result :=  GET_MIN(3, 2, 1);
END;
/

Результат:

dbms_output:
min: 1
min: 1
min: 1
min: 1
min: 1
min: 1
min: 1
min: 1
min: 1

дБ <> скрипка здесь

...