Как получить пользовательский ввод как альтернативный вывод функций NVL () в Oracle SQL? - PullRequest
0 голосов
/ 04 октября 2019

Этот запрос проверяет всех сотрудников под данным менеджером, а также уровень, идентификатор менеджера, имя менеджера. При запуске этого столбца имя менеджера для уровень 1 содержит ноль , что в основном означает, что они находятся непосредственно под введенным менеджером. Как я могу получить имя введенного менеджера в столбце имени менеджера для уровня 1.

Я использую Oracle 11g.

    select id,(firstname||' '||lastname) as name,managerid, 
    nvl(prior (firstname||' '||lastname),'want user input shown here') as manager_name, level
    from employee
    connect by prior id = managerid
    start with managerid=(select id from employee where firstname = '&firstname' and 
    lastname='&lastname') order by level;

Ответы [ 2 ]

0 голосов
/ 05 октября 2019

Введенный пользователем означает имя и фамилию, которые здесь являются подстановочной переменной.

Вы можете использовать &&, как показано ниже.

select id,(firstname||' '||lastname) as name,managerid, 
    nvl(prior (firstname||' '||lastname),'&&firstname &&lastname') as manager_name, level
    from employee
    connect by prior id = managerid
    start with managerid=(select id from employee where firstname = '&&firstname' and 
    lastname='&&lastname') order by level;

Приветствия !!

0 голосов
/ 04 октября 2019

Я использовал таблицу stock scott.emp для моего примера, вы должны иметь возможность изменить ее соответствующим образом:

WITH starter AS (
  SELECT b.empno, b.ename 
  FROM scott.emp b
  WHERE b.ename = 'KING'
)
SELECT a.ename, 
       NVL(PRIOR(a.ename), (SELECT s.ename FROM starter s))
FROM scott.emp a
CONNECT BY a.mgr = PRIOR (a.empno)
START WITH a.mgr = (SELECT s.empno FROM starter s);

Признаю, это немного круто, но оно получит работусделал.

...