Вопросы на собеседовании на позиции PL/SQL программист:


Лично у меня, на моем интервью по PL/SQL обычно спрашивали достаточно простые вещи. Вроде if / else и в зависимости от ветви вызвать ту или иную процедуру.

Правда нужно отметить, что я никогда не работал чисто PL/SQL программистом. Скорее так, по мелочи. Запомнился вопрос.


Как одной командой удалить все дубликаты из таблицы.


SELECT * FROM
  employees e
WHERE
  e.rowid <>
    (
      SELECT
        MAX(ee.rowid)
      FROM
                employees ee
            WHERE
        ee.first_name = e.first_name
        AND ee.last_name = e.last_name
        AND ee.age = e.age
    );

https://t.me/oracle_dba_ru/9200


delete FROM t_table e
WHERE
  e.rowid <>
    (
      SELECT
        MAX(ee.rowid)
      FROM t_table ee
      WHERE
          ee.date_p = e.date_p
      AND ee.product_p = e.product_p
    );


https://t.me/oracle_dba_ru/9212


См. также:
https://www.sql.ru/faq/faq_topic.aspx?fid=711


Ниже реальный пример от коллеги, когда он куда-то ходил собеседоваться. Copy / Paste


-- Что делает эта функция?
function ХХХХХ(date_from date, date_to date) return number as
    n number;
  begin
    if (date_from is null) or (date_to is null) then
      return 0;
    else
      begin
        select count(*)
          into n
          from (select rownum rnum
                  from all_objects
                  where rownum <= to_date(date_to) - to_date(date_from) + 1)
          where to_char(to_date(date_from) + rnum - 1, 'DY') not in
                ('СБ', 'ВС', 'SUN', 'SAT');
        return n;
      end;
    end if;
  end;