有关sql server 7的问题(100分)

  • 主题发起人 主题发起人 fstao
  • 开始时间 开始时间
F

fstao

Unregistered / Unconfirmed
GUEST, unregistred user!
数据库是Sql server7,我想做一个查询,是涉及到好几个表,那我得写
个存贮过程,例如这样写:
Create table temp1([id] int primary key CLUSTERED IDENTITY (1, 1) NOT NULL,
f1 varchar(20) null, f2 varchar(20) null,...)

--然后下面写的sql是把涉及的表insert into Temp1
...
...
...

--然后就select temp1和drop temp1
select * from temp1
drop table temp1

我在delphi用Ado连接sql server 7,用Tadostoredpro连接我刚才写的存贮过程,
然后编译成*.exe文件,运行它,在单用户上是没有事的,在多用户上就出现了
问题,如果两部机器都运行*.exe文件,如果这两个*.exe文件都调用存储过时,
第一个先调用的没有问题,但第二个调用时,就会出现错误:
“There is already an object named 'temp1' in the database”,当第一个
调用完了,第二个用户再调用就不会出现问题了,如何处理这个问题呢?那么如何
解决第一个用户调用存储时,第二个紧接着调用时,如果第一个用户没有调用完,
第二个用户就等待着,当第一个用户调用完后,第二个才调用?或者说有没有更好
的方法?
 
我记得好像可以用临时表解决,临时表跟线程有关
试试
Create table #temp1。。。。
这样
 
你这种情况最好写存储过程,其中用临时表,不会有问题的。
 
临时表分两种。一种是对单用户的(session),一种是多用户公用。(application)
区别是#tempdb,和##tempdb.
但是建议不要用临时表。(或许你用惯了DB2)
1.视图是很方便的解决方案。
2.如果sql熟的话,直接用sql。(union)
 
有时一定要建立临时表才能解决的。
 
多人接受答案了。
 
后退
顶部