怎样在delphi中用代码判断MS-SQL数据库中是否存在同名的临时表

drift1983 2004-09-14 07:48:33
怎样判断有没有同名的实际表我知道,但怎样判断是否有同名临时表我就要请教各位了,因为临时表的名字好像在systemobjects表中查不到,而且临时表是在tempdb 库中,在你当前项目使用的自己定义的库中的systemobjects表中一般没有记录,所以,我不知怎样办了。
请大家附上调试通过的代码。
谢谢!!!
...全文
157 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
hustjoker 2004-09-14
  • 打赏
  • 举报
回复
其实局部的一样可以这样搞,我下面的是调试通过了的:
EntryDM.ADOQR_temp1.Close;
EntryDM.ADOQR_temp1.SQL.Clear ;
EntryDM.ADOQR_temp1.SQL.Add('if (object_id('+quotedstr('tempdb..#temp_table1')+') is not null) '+'Drop Table #temp_table1');
EntryDM.ADOQR_temp1.ExecSQL;
longtusoft 2004-09-14
  • 打赏
  • 举报
回复
同意楼上
pbsql 2004-09-14
  • 打赏
  • 举报
回复
局部临时表(#t)用不着这样做,只有全局临时表(##t)才需要:
...
ADOQuery1.SQL.Add('if exists (select * from tempdb.dbo.sysobjects where name=''##t'' and xtype=''U'' ');
ADOQuery1.SQL.Add('drop table ##t');
...
drift1983 2004-09-14
  • 打赏
  • 举报
回复
好多东西在查询分析器中可以,我以搞到DElphi中就不行了
drift1983 2004-09-14
  • 打赏
  • 举报
回复
如果有同名的就删除
drift1983 2004-09-14
  • 打赏
  • 举报
回复
大家写成
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add();
ADOQuery1.ExecSQL;
这个样子啊,关键是在ADD()里给我加个语句,我自己正在试,总是搞不好,到处错
lijinghe1 2004-09-14
  • 打赏
  • 举报
回复
好像有同种临时——两种
zwb666 2004-09-14
  • 打赏
  • 举报
回复
与判断实际表一样,只是sysobjects要写成tempdb.dbo.sysobjects,临时表以#开头,其他没什么区别
pbsql 2004-09-14
  • 打赏
  • 举报
回复
与判断实际表一样,只是sysobjects要写成tempdb.dbo.sysobjects,临时表以#开头,其他没什么区别
lijinghe1 2004-09-14
  • 打赏
  • 举报
回复
好像有同种临时表,通过加#实现,有一种是全局的——你不要建全局的,基本可以不作判断。

如果要判断的话,在tempdb 的sysobjects 中查找,用like,因为系统会在你的表名后加随机数。

具体的看看帮助吧。

2,507

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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