客户端怎样访问存储过程中建立的临时表?(50分)

  • 主题发起人 主题发起人 dadada
  • 开始时间 开始时间
D

dadada

Unregistered / Unconfirmed
GUEST, unregistred user!
需要在客户端读取服务器上SQL存储过程中建立的临时表,如果是单用户,可以把它insert到一个字段相同的实表里去,供客户端select 语句读取.<br>但是问题是: 客户端是多用户的,每个用户在执行这个存储过程时,生成的临时表的数据会不一样.如果用上面的办法来处理,就会发生数据错乱.<br>请问高手们是怎么做的?<br>没代码,提供一点思路也可以啊?
 
oracle中的临时表会自动清空,所以你可以把执行存储过程的语句和Select查询的语句放到一个事务里一起提交,这样A客户查询出结果后临时表被自动清空,B用户的查询是不会受到影响的,语句应类似于如下的写法:<br>SQL.Add('Begin ....; End; ');//....为调用的存储过程及参数<br>SQL.Add(Select * From tmp1 Where ...; ');<br>SQL.Execute;<br>...
 
谢谢楼上! 但我用的是SQL Server 2000<br>刚才查了很多旧帖,也没有找到方法. 请再指点一下啊
 
你可以这样:在程序中加入清空临时表的命令,当数据检索出来后加载到Grid中供客户浏览,当这个加载过程完成后你就执行清空命令。
 
那个临时表在用户操作期间必须一直存在,而且也不是只用于显示,而是要对存储过程返回的数据进行select查询,作循环处理等后续工作.<br>这个提问于2001年的帖子与我的问题比较接近,但我觉得那样解决有点复杂,不直观:<br>话题577230的标题是: 如何从 SQL 临时表取数 (50分)
 
我估计你的设计思路自相矛盾<br>又想别人看不到你的临时表,又想你自己能操作临时表<br>私有的临时表 你离开线程你就看不到了 哪怕你是在同一个程序里。简单说 ADOQuery1创建的临时表 ADOQuery2就打不开<br>公共临时表 谁都能看见 跟普通表一样<br>------<br>你可以使用一个全局的临时表,然后增加一个标识列,不同客户端的标识不一样就可以解决你的问题了 我就是这样用的
 
接受答案了.
 
后退
顶部