首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

delphi 中的事务对存储过程起作用吗解决方案

2012-09-16 
delphi 中的事务对存储过程起作用吗delphi 中的事务对存储过程起作用吗比如trydata1.ADOConnection1.Begin

delphi 中的事务对存储过程起作用吗
delphi 中的事务对存储过程起作用吗

比如

try
  data1.ADOConnection1.BeginTrans;
  ADOQueryTmp := nil;
  ADOQueryTmp := TADOQuery.Create(ADOQueryTmp);
  ADOQueryTmp.Connection := Data1.ADOConnection1;
  s_sql:='delete t_StockInDetail where F_BillID='''+F_BillID+'''';
  ADOQueryTmp.SQL.Clear ;
  ADOQueryTmp.SQL.Add(s_sql) ;
  ADOQueryTmp.ExecSQL;
  s_sql:='delete t_StockIn where F_BillID='''+F_BillID+'''';
  ADOQueryTmp.SQL.Clear ;
  ADOQueryTmp.SQL.Add(s_sql) ;
  ADOQueryTmp.ExecSQL;
  data1.ADOConnection1.CommitTrans;
  Application.MessageBox('删除成功','提示',mb_ok);
  except
  data1.ADOConnection1.RollbackTrans;
  Application.MessageBox('删除不成功','提示',mb_ok);
  end;

这个是delphi的事务

如果是下面这种用存储过程来表示

try
  data1.ADOConnection1.BeginTrans;
  ADOQueryTmp := nil;
  ADOQueryTmp := TADOQuery.Create(ADOQueryTmp);
  ADOQueryTmp.Connection := Data1.ADOConnection1;
  s_sql:=exec pr_stock '''+F_BillID+'''';
  ADOQueryTmp.SQL.Clear ;
  ADOQueryTmp.SQL.Add(s_sql) ;
  ADOQueryTmp.ExecSQL;
  data1.ADOConnection1.CommitTrans;
  Application.MessageBox('删除成功','提示',mb_ok);
  except
  data1.ADOConnection1.RollbackTrans;
  Application.MessageBox('删除不成功','提示',mb_ok);
  end;

而存储过程中的代码为
delete t_StockInDetail where F_BillID=@F_BillID
delete t_StockIn where F_BillID=@F_BillID

这样能对存储过程起作用吗,如果能,那我只要在delphi中使用事务了,存储过程可以不管事务了吗

[解决办法]
可以,一般BeginTrans放在try前面,except之后触发异常.
你动态创建的query需要手工释放
[解决办法]
当然可以起作用!
[解决办法]
其实也没要问,自己测试一下不就可以了!
[解决办法]
我觉得事务尽量放在程序中控制,存储过程中可以做为事务点来用
[解决办法]
确定对存储过程起作用
[解决办法]
肯定有作用...

事务是对于这个LINK来说的...就是TADOConnection.

热点排行