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

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

2013-01-02 
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.

热点排行