該解決方案使用一個存儲過程來包裝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