高手进来看看,急急急急急急急急急急急急急急急急急急急急急

harrypotter 2001-09-25 11:06:30
我在cb中要更新数据库中的一系列记录,我的代码如下:

AnsiString m_sBrowSQL;
m_sBrowSQL = "Update docman.BlueMapBorw2 "
"set BorrowTime = To_Date(:BorrowTime,'yyyy-mm-dd'), "
" BorrowPeriod = :BorrowPeriod, "
" BorrowType = 1 ,"
" LenderID = :LenderID "
" where FlowNo =:FlowNo ";
Query1->SQL->Add(m_sBrowSQL);
if( ! Query1->Prepared)
Query1->Prepare();

//while(! PreBrowQuery->Eof )
//{
Query1->Params->ParamByName("BorrowTime")->AsString = "1989-1-1";
Query1->Params->ParamByName("BorrowPeriod")->AsInteger = 20;
Query1->Params->ParamByName("LenderID")->AsInteger = 4;
Query1->Params->ParamByName("FlowNo")->AsInteger = 61;
Query1->ExecSQL();


我用的数据库是Oracle,程序执行到ExecSQL的时候非常慢,
请教各位高手,看看代码到底是哪儿错了。

我的程序其实是首先通过一个查询操作查出一系列的记录,然后根据这个查询返回的结果
更新另外一个表中相关的记录,完成这种操作,除了我上面的方法外还有没有什么简单
的方法。



...全文
140 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
ylm163net 2001-09-26
  • 打赏
  • 举报
回复
不会是没加PreBrowQuery->Next()吧
harrypotter 2001-09-26
  • 打赏
  • 举报
回复
我同样的代码在pl/sql下速度挺快的。

帮帮我。
jerfly 2001-09-25
  • 打赏
  • 举报
回复
同意Wingsun(孙春阳) 
Wingsun 2001-09-25
  • 打赏
  • 举报
回复
对,我同意。
你还不如用存储过程来做,不过Oracle有点讨厌就是不支持这样的语法
update Table1,table2 set table1.field1=table2.field2 where table2.field3=xxx
搞得我只好使用存储过程来完成,我建议你也用存储过程吧。
nofeal 2001-09-25
  • 打赏
  • 举报
回复
因为你是循环调用ExecSQL(),当然会很慢。
szwxj 2001-09-25
  • 打赏
  • 举报
回复
在数据库中的FlowNo字段可能没有建索引。
用sql*plus执行下面的命令:
create index index_name on docman.BlueMapBorw2(FlowNo);
ytjoh 2001-09-25
  • 打赏
  • 举报
回复
我想可能是To_Date(:BorrowTime,'yyyy-mm-dd')的转换引起的
harrypotter 2001-09-25
  • 打赏
  • 举报
回复
还没解决。
harrypotter 2001-09-25
  • 打赏
  • 举报
回复
to hellowbh:我去掉了循环,也慢,在循环中当然有PreBrowQuery->Next()啦。
mozhou 2001-09-25
  • 打赏
  • 举报
回复
谁说的ExecSQL()比Open()慢,有什么依据?
hellowbh 2001-09-25
  • 打赏
  • 举报
回复
你的循环里没有PreBrowQuery->Next(),岂不是无限循环?
harrypotter 2001-09-25
  • 打赏
  • 举报
回复
大家看看,真的很急。
harrypotter 2001-09-25
  • 打赏
  • 举报
回复
我试过的,不用循环也相当慢。

若用存储过程,参数怎么传,我要修改的记录不止一条,并且对每一条记录更改后的值都不一样。

这种情况用存储过程该怎么实现。?

13,873

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧