Может быть, хранимая процедура будет хорошей идеей, особенно если вы часто добавляете новые строки. Вместо того чтобы хранить оператор INSERT INTO
в каком-либо сценарии (и нужно помнить, где вы его поместили), процедура постоянно хранится в базе данных.
Может выглядеть так:
create or replace procedure p_ins_ame (
par_id in act_my_employee.id%type,
par_first_name in act_my_employee.first_name%type,
par_last_name in act_my_employee.last_name%type,
par_salary in act_my_employee.salary%type)
is
begin
insert into act_my_employee (id,
last_name,
first_name,
some_column,
salary)
values (
par_id,
par_last_name,
par_first_name,
lower (
substr (par_first_name, 1, 1)
|| substr (par_last_name, 1, 7)),
par_salary);
END;
Вы бы назвали его как
begin
p_ins_ame (par_id => 100,
par_first_name => 'Little',
par_last_name => 'Foot',
par_salary => 1000);
end;
Конечно, его можно доработать, чтобы он вставлял порядковый номер вместо «фиксированного» значения ID
(или, если ваша версия базы данных поддерживает это, используйте столбец identity
). Любые сделанные вами изменения будут использоваться во всех последующих вызовах процедур.
Начиная с одного оператора INSERT INTO
: как вам уже говорили, некоторые инструменты (например, SQL* Plus) позволяют использовать два амперсанда (&&
) вместе с именем переменной. Это означает, что вам не будет предложено ввести значение одной и той же переменной дважды (или столько раз, сколько указано в этом скрипте), но только один раз.
Это нормально, просто будьте осторожны! Если вы введете sla sh (/
) в командной строке и нажмете клавишу ENTER
, вы вставите эту же строку еще раз (если она не сработает из-за уникальности). Не забудьте UNDEFINE эти переменные!