insert多筆資料要怎麼寫最簡便? |
答題得分者是:st33chen
|
cswang1210
一般會員 ![]() ![]() 發表:46 回覆:42 積分:17 註冊:2005-01-06 發送簡訊給我 |
各位大大:
我想要insert多筆資料,而我要insert的值是會變動的,我必需跑一個迴圈將
值讀出來,如果我使用下面的方式,我會覺得效能很不好,因為會執行n次的execSql.....
-------------------
for...
begin
Qry.Sql.clear;
Qry.Sql.add('insert into a.aaa (R1,R2) values');
Qry.sql.Add('(:m1,:m2)');
Qry.ParamByName('m1').value := a;
Qry.ParamByName('m1').value := b;
Qry.ExecSQL;
end;
------------------------------------------
所以我想到另一種語法...這樣我可以先準備好sql指令...然後一次執行.... insert into a.aaa values(:m1,:m2),(:m3,:m4),(..),(..) 但是又不知道如何將變動的參數放進去....
請各位大大幫忙,我該怎麼寫才是最有效率的方法...謝謝!
|
kgt
高階會員 ![]() ![]() ![]() ![]() 發表:17 回覆:308 積分:165 註冊:2002-03-13 發送簡訊給我 |
|
christie
資深會員 ![]() ![]() ![]() ![]() ![]() 發表:30 回覆:299 積分:475 註冊:2005-03-25 發送簡訊給我 |
|
cswang1210
一般會員 ![]() ![]() 發表:46 回覆:42 積分:17 註冊:2005-01-06 發送簡訊給我 |
|
st33chen
尊榮會員 ![]() ![]() ![]() ![]() ![]() ![]() 發表:15 回覆:591 積分:1201 註冊:2005-09-30 發送簡訊給我 |
您好, 雖然已有滿意答案了, 還請參考一下... Qry.Sql.add('insert into a.aaa (R1,R2) values');
Qry.sql.Add('(:m1,:m2)'); 應該可以放在 for 之上, 不必放在 loop 內每次都 清空 sql 再 add.
這正好是 sql 參數的好用之處.
或是改成
for...
begin
Qry.Sql.text:='insert into a.aaa (R1,R2) values (' a ',' b ')';
Qry.ExecSQL;
end;
那就不必再用 parambyname 了...
當然, a 及 b 時要注意型別...
------
IS IT WHAT IT IS 我是 李慕白 請倒著唸. 又想把老話拿出來說, 請用台語發音 : 專家專家全是ROBOT CAR (滷肉腳啦); 都已接手這麼久了, 績效還是那麼爛, 講話還那麼大聲. |
st33chen
尊榮會員 ![]() ![]() ![]() ![]() ![]() ![]() 發表:15 回覆:591 積分:1201 註冊:2005-09-30 發送簡訊給我 |
您好, 雖然已有滿意答案了, 還請參考一下... 如果您要 insert 的資料來源是另一個 table 的部份欄位 或 部份 records,
那christie兄的
insert into a.aaa (R1,R2) SELECT R1,R2 FROM TBLx ...
倒是最簡潔的寫法
------
IS IT WHAT IT IS 我是 李慕白 請倒著唸. 又想把老話拿出來說, 請用台語發音 : 專家專家全是ROBOT CAR (滷肉腳啦); 都已接手這麼久了, 績效還是那麼爛, 講話還那麼大聲. |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |