SQL получает пользовательский ввод и далее использует его - PullRequest
0 голосов
/ 21 мая 2019

У меня есть задача вставить новую запись в таблицу EMPLOYEES.Я знаю, как это сделать, попросив пользователя ввести значение, например:

INSERT INTO EMPLOYEES (first_name, last_name, email, hire_date, job_id)
VALUES ('&first_name', '&last_name', '&email' ,'&hire_date', 'SA_REP' );

Однако я бы не хотел спрашивать пользователя о email, а вставлял его автоматически:взятие первой буквы ввода first_name, объединенной с last_name лица, данные которого добавляются в таблицу.Чтобы сделать это, я думаю, что мне нужно временно сохранить вставленные значения или, по крайней мере, получить некоторую ссылку на first_name и last_name.Я пытался искать в Интернете, но на самом деле ничего не получилось.Не могли бы вы дать мне самое простое решение этой задачи?Я использую Oracle SQL Developer.

Ответы [ 2 ]

1 голос
/ 21 мая 2019

Вы можете заключить его в блок PL / SQL, чтобы использовать соответствующие переменные с правильными типами данных. Это также гарантирует, что значения для переменной date введены правильно, в ожидаемом правильном формате.

DECLARE
v_first_name employees.first_name%type := '&first_name';
v_last_name  employees.last_name%type  := '&last_name';
v_hire_date  employees.hire_date%type  := TO_DATE('&hire_date_YYYYMMDD','YYYYMMDD');
BEGIN

INSERT INTO EMPLOYEES (first_name, last_name, email, hire_date, job_id)
VALUES (v_first_name, v_last_name, 
      substr(v_first_name,1,1)||'.'||v_last_name , v_hire_date, 'SA_REP' );
      --first letter of the first_name with last name
END;
/

Результат

Enter value for first_name: John
Enter value for last_name: Doe
Enter value for hire_date_YYYYMMDD: 20190521
..
..
PL/SQL procedure successfully completed.
0 голосов
/ 21 мая 2019

Вы должны быть в состоянии сделать это:

INSERT INTO EMPLOYEES (first_name, last_name, email, hire_date, job_id)
    VALUES ('&first_name', '&last_name', '&first_name' || '.' || '&last_name' ,'&hire_date', 'SA_REP' );
...