该解决方案使用一个存储过程来包装INSERT语句中循环。也许更适合大量数据的性能很关键:
文件InsertEmployee.sql
drop procedure InsertEmployee;
create procedure InsertEmployee(
p_start_empid like employee.empid,
p_end_empid like employee.empid,
p_country like employee.country,
p_state like employee.state
) returning char(255);
define i integer;
let i = p_start_empid;
while i <= p_end_empid
insert into employee (
empid,
country,
state
) values (
i,
p_country,
p_state
);
-- logging
-- if (DBINFO('sqlca.sqlerrd2') > 0) then
-- return "inserted empid=" || i || " country=" || p_country || " state=" || p_state with resume;
-- end if
let i = i + 1;
end while;
end procedure;
负载存储过程到数据库:
dbaccess mydatabasename InsertEmployee.sql
呼叫从外壳存储过程提示:
echo 'execute procedure InsertEmployee(1,100,"us","ca");' | dbaccess mydatabasename
我试过这个,但在执行脚本时,我在行start ='expr $ start + 1'处看到一个错误, – user2573747