起步软件技术论坛-X3

 找回密码
 立即注册
搜索
12
返回列表 发新帖
楼主: rzport_jqf

【结贴】[问题]关于oracle临时表**

[复制链接]
发表于 2008-11-25 13:07:55 | 显示全部楼层
回10楼
如果不用立即事务,你的插入和查询,在服务端不一定是同一个connection。
如果用立即事务就是同一个connection,我做了测试了。
//事务级的临时表
{
drop table tmp_aa;
--事务级
CREATE GLOBAL TEMPORARY table tmp_aa(tmpA Varchar2(10),tmpB varchar2(10))
      ON COMMIT DELETE ROWS;
commit;
}
procedure TMainForm.Button3Click(Sender: TObject);
var
  lTransactionHandle : TTransactionHandle;
begin
  //一定要开一个立即事务,否则不行,因为是事务级的临时表
  lTransactionHandle :=Query1.Connection.Transaction.Start(true);    //启动立即事务 Start
  try
    Query1.Close;
    Query1.CommandText := ' delete from tmp_aa';
    Query1.Execute;
    Query1.CommandText := ' insert into tmp_aa values(''1'',''2'')';
    Query1.Execute;

    Dialogs.ShowMessage('插入成功');

    Query1.Close;
    Query1.CommandText := 'select * from tmp_aa';
    Query1.Open;
    Dialogs.ShowMessage('打开数据集');

    Query1.Connection.Transaction.Commit(lTransactionHandle);   //  提交事务
  except
    Query1.Connection.Transaction.Rollback(lTransactionHandle);  //回滚事务
  end;
  Dialogs.ShowMessage('事务提交成功');

  Query1.Close;
  Query1.CommandText := 'select * from tmp_aa';
  Query1.Open;
  Dialogs.ShowMessage('重新打开数据集');
end;
回复 支持 反对

使用道具 举报

发表于 2008-11-25 14:32:33 | 显示全部楼层
to金工:
例子(用studio中的业务资源管理器直接拷贝进去,改改数据源链接和存储过程名称)

新建文件夹 (2).rar

9.15 KB, 下载次数: 27

回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-11-25 15:03:52 | 显示全部楼层
好了. 谢谢!
回复 支持 反对

使用道具 举报

发表于 2008-11-25 15:12:24 | 显示全部楼层
客气,结贴。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-27 18:06 , Processed in 0.047751 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表