数据量大的时候用 @寫法1)
数据量小的时候用 @寫法2)
因为Append这类的处理都是要放到缓存中的
如果数据量大,系统处理的速度会很慢你还可以在 @寫法1 的基础上改进一下
一次性执行多条语句(在SQL Server中是可以的,没有测试过Oracle)
sqlinststa := ''; For n:=1 to m-1 do
begin
sqlinststa:=sqlinststa + 'insert into tab_chkduty(sta_id,chk_day,modtime) ';
sqlinststa:=sqlinststa + 'values('''+stadata[n]+''',To_Date('''+DateToStr(p)+''',''YYYY/MM/DD''),sysDate )'#13#10;
end; try
DM.C_CHKDUTY.Close;
DM.C_CHKDUTY.open;
DM.C_CHKDUTY.CommandText:=sqlinststa;
DM.C_CHKDUTY.execute;
DM.C_CHKDUTY.ApplyUpdates(0);
Except
showmessage('數據庫錯誤!!');
end;
数据量小的时候用 @寫法2)
因为Append这类的处理都是要放到缓存中的
如果数据量大,系统处理的速度会很慢你还可以在 @寫法1 的基础上改进一下
一次性执行多条语句(在SQL Server中是可以的,没有测试过Oracle)
sqlinststa := ''; For n:=1 to m-1 do
begin
sqlinststa:=sqlinststa + 'insert into tab_chkduty(sta_id,chk_day,modtime) ';
sqlinststa:=sqlinststa + 'values('''+stadata[n]+''',To_Date('''+DateToStr(p)+''',''YYYY/MM/DD''),sysDate )'#13#10;
end; try
DM.C_CHKDUTY.Close;
DM.C_CHKDUTY.open;
DM.C_CHKDUTY.CommandText:=sqlinststa;
DM.C_CHKDUTY.execute;
DM.C_CHKDUTY.ApplyUpdates(0);
Except
showmessage('數據庫錯誤!!');
end;
解决方案 »
- 水印和水印报表是什么?请教 谢谢!
- 移动密码箱,不想自己一个人用,虽暂别Delphi却在用VCL思想写Java程序:)送工作流编辑器源码
- 大家能跟我说一下这inherited是什么意思吗?
- 系统分析员要求具备哪些条件??
- 我想修改窗体名为 newwindow中的imgae5的高度,我这样写为什么是错的呢?请帮忙改一改.
- 请教关于状态对象与无状态对象
- 请教关于数组和指针
- 那有SourceInSigth或是这样看源码的工具下载?
- 大家一定会奇怪为什么大陆没有象李维老师这样的技术专家
- element ui 合计行
- 100分求角度
- 一个Table:有三个字段: JNGZ GWGZ JN; 如果让:JNGZ=(GWGZ+JN)*3 如何用程序来表达?
DM.C_CHKDUTY.open;
DM.C_CHKDUTY.CommandText:=sqlinststa;
DM.C_CHKDUTY.execute;
DM.C_CHKDUTY.ApplyUpdates(0);
close,open 在三层结构中会很慢的。不过经楼上的改动好多了,值得我们学习!我的见解是:在循环语句终于一般不用sql.当然,楼上的改进只是在循环中生成了sql语句,并没有在循环阶段执行,真得不错的!望大家在讨论:)
#13是回车 #10是换行 我不明白有什麼問題???
|
|
|
/|\
|
|
好好看你的sql语句去
你可以用换行符分割一大堆的SQL语句让SQL一起执行
加了逗號後 又出現'ora-00911: 字符無效'錯誤.我沒輒了.算了,我用方法2. 等我的程序完成後一起給分....