操作系统表的问题

caoqizi 2005-01-05 03:17:36
对系统表的操作问题.
我想用下面的方法取出字段名等表的信息,可是其object_id(TableName)中的TableName 必须是永久表才可以,现在我想把这个永久表换成如 #tmpTable 这样的临时表怎么不能用呢? 还有当我创建临时表时,在临时数据库里显示的不是原来的临时表名(#tmpTable ),而是如 #tmpTable________000000000F80 这样的.

Declare @tbname sysname
Select * into #tmpTable From TableName1
Select @tbname = 'tempdb..#tmpTable'

Select *
from syscolumns a, systypes b
where a.id=object_id(@tbname) and a.xusertype=b.xusertype
order by a.colid
请问这样的问题如何处理? 谢谢
...全文
85 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
caoqizi 2005-01-05
  • 打赏
  • 举报
回复
是的.说错了.贴子我结了.
wozhuchuanwei 2005-01-05
  • 打赏
  • 举报
回复
Select name FROM Tempdb..syscolumns where id=object_id('tempdb..#TMP')
能取到临时表的列名哦!
caoqizi 2005-01-05
  • 打赏
  • 举报
回复
我想问题还是在于 临时表在tempdb里表示为: #tmpTable________000000000F80 这样的形式
caoqizi 2005-01-05
  • 打赏
  • 举报
回复
但临时表里有数据,可是用
Select *
from tempdb..syscolumns a, tempdb..systypes b
where a.id=object_id('#arc') and a.xusertype=b.xusertype
order by a.colid
样的方法求出来为空.
caoqizi 2005-01-05
  • 打赏
  • 举报
回复
但是临时数据库里显示的临时表为: #tmpTable________000000000F80 这样的形式.这是为何呢? 为什么不是我们所看到的#tmpTable 形式呢?
zjcxc 2005-01-05
  • 打赏
  • 举报
回复
OBJECT_ID
返回数据库对象标识号。

语法
OBJECT_ID ( 'object' )

参数
'object'

要使用的对象。object 的数据类型为 char 或 nchar。如果 object 的数据类型是 char,那么隐性将其转换成 nchar。

返回类型
int

注释
当该参数对系统函数可选时,则系统采用当前数据库、主机、服务器用户或数据库用户。内置函数后面必须跟圆括号。

如果指定一个临时表名,则必须在临时表名前面加上数据库名,例如:

SELECT OBJECT_ID('tempdb..#mytemptable')

zjcxc 2005-01-05
  • 打赏
  • 举报
回复
临时表在tempdb数据库中,所以操作要基于tempdb数据库才行
NinGoo 2005-01-05
  • 打赏
  • 举报
回复
Select *
from tempdb..syscolumns a, tempdb..systypes b
where a.id=object_id(@tbname) and a.xusertype=b.xusertype
order by a.colid

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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