SQL临时表操作问题(200)

  • 主题发起人 主题发起人 woodyou
  • 开始时间 开始时间
W

woodyou

Unregistered / Unconfirmed
GUEST, unregistred user!
以下是我的例子procedure TFrmdictionary.tsdoctorShow(Sender: TObject);var a:Integer;beginwith LISDataMod.qrytemp dobeginClose;SQL.Clear; SQL.Add('if exists(select name from sysobjects where name='+'''+#tmptable+'''+ 'and type='+'''+U+'''+') drop table tmptable') ; execsql; end; with LISDataMod.qrytemp dobegin Close;SQL.Clear;SQL.Add('create table #tmptable(Infectedpatch_myid char(4), Infectedpatch char(20), brevitycode char(20))') ; execsql;end; with LISDataMod.qrycomm do begin Close; SQL.Clear; SQL.Add('select * from Infectedpatchs order by Infectedpatch_id'); Open; if RecordCount>0 then begin First; for a:=0 to RecordCount-1 do begin LISDataMod.qrytemp.Close; LISDataMod.qrytemp.SQL.Clear; LISDataMod.qrytemp.sql.Add('insert into #tmptable (Infectedpatch_myid,Infectedpatch,brevitycode) ' + 'values(:my0,:my1,:my2)'); LISDataMod.qrytemp.parameters.items[0].value:=Encrypt(Trim(fieldbyname('Infectedpatch_myid').AsString),funs.key); LISDataMod.qrytemp.parameters.items[1].value:=Encrypt(Trim(fieldbyname('Infectedpatch').AsString),funs.key); LISDataMod.qrytemp.parameters.items[2].value:=Encrypt(Trim(fieldbyname('brevitycode').AsString),funs.key); LISDataMod.qrytemp.prepared:=true; LISDataMod.qrytemp.execsql; Next; end; end; end; with LISDataMod.qrytemp dobeginClose;SQL.Clear; SQL.Add(' select * from #tmptable order by Infectedpatch_myid ') ; Open;end;dsInfect.Enabled:=False;dsInfect.DataSet:= LISDataMod.qrytemp;dsInfect.Enabled:=true; end;为何老是提示临时表“对象“#tmptable ”无效”,好象是临时表#tmptable没有创立,请问如何解决临时表#tmptable创立及使用问题?
 
为何老是提示临时表“对象“#tmptable ”无效”,好象是临时表#tmptable没有创立,请问如何解决临时表#tmptable创立及使用问题?
 
不要在临时两个字上纠结了,创建一个表,用完删除它就是临时表
 
B/S结构的,万一你删除其他用户在用此表,那不是麻烦大了,按funxu讲会出大量写磁盘,会好慢的
 
临时表是保存在tempdb数据库下的,而且sysobjects表NAME列中保存的也不是原来的表名,而是后面带了N个下划线的,你可以改用全局临时表就是两个井号的,这时tempdb下的sysobjects表中NAME列中保存的是实际的名字,你也可以改为一个实际表,这样也是可以的阿。
 
我问的是“为何老是提示临时表“对象“#tmptable ”无效”,好象是临时表#tmptable没有创立,请问如何解决临时表#tmptable创立及使用问题? ”请认真看主题
 
楼主阿!我已经解释的非常详细了阿!你判断#tmptable当然无效了,他在sysobjects中的名字是带了下划线的,不是原来#tmptable你改用##tmptable 就行了,或者用一个正常的表,你查询临时表时不要在你的数据库下,要在tempdb数据库下去查询sysobjects表!
 
李翔鹏说的很对,这个问题他也帮助过我,借此也谢谢他!
 
不是最终的答案散分
 

Similar threads

回复
16
查看
231
blackbook
B
T
回复
13
查看
143
thesadfrog
T
回复
10
查看
169
易名烦
后退
顶部