续“ORACLE8存储过程中能否创建临时表”

sujinfeng 2000-02-27 12:26:00
各位大虾:
如果不能从ORACLE8的存储过程返回记录集,那么只能把查询值添加到一张现有的表中,在DELPHI程序先执行TStoredProc的ExecProc方法后,用TQuery得到这张表的数据。这样一来当多个用户同时执行此存储过程时,会发生此表数据紊乱,如果把此表设为独占的,又影响系统运行效率。有否解决办法?
为说明清楚以上问题,请做以下题目:
在Delphi4中执行完TStoredProc的Open或ExecProc方法后,TDbGrid显示表Table1的所有数据。请写出ORACLE的存储过程的源代码和TStoredProc的属性设置情况。
...全文
110 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
seewell 2001-09-14
  • 打赏
  • 举报
回复
如果是我做,每次执行存储过程前,都锁住当前要更改的那条纪录,这样不会影响其他用户更改表中其他的记录,不会影响执行的效率了,数据也不会乱了.锁可以用selsect * from table where ID=XX for update nowait来做.
不知道有没有帮助
yanghong 2001-09-14
  • 打赏
  • 举报
回复
or in stored procedure
TYPE temp_cur is REF CURSOR;
PROCEDURE get_cur (a_cur IN OUT temp_cur ) IS
BEGIN

OPEN a_cur FOR SELECT * FROM backup.tab1;

END;

yanghong 2001-09-14
  • 打赏
  • 举报
回复
use 'create temporary table ' to create temporary table, this table would be drop automaticly after the transcation is end.
AyXmt 2000-03-02
  • 打赏
  • 举报
回复
在临时表中加多一个字段,(User_id),
每次调用时用产生一随机数即可.
每个进程的USER_ID=随机数!
(建议,我是用的机器名!可以明白是谁的进程!)

5,379

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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