gpt4 book ai didi

sql - 获取 sybase 中临时表的列

转载 作者:行者123 更新时间:2023-12-03 17:58:57 25 4
gpt4 key购买 nike

有没有办法在sybase中获取临时表的列列表?
假设我有一张名为 #mytable 的表

select count (*) from  tempdb..#mytable

返回 145 表示该表中有 145 行。
我尝试了以下(有一些变化)
select so.name from tempdb..syscolumns sc inner join tempdb..sysobjects so on sc.id = so.id where so.name = '#mytable'

也试过
select so.name from tempdb..syscolumns sc inner join tempdb..sysobjects so on sc.id = so.id where so.name = 'tempdb..#mytable'

两者都以空的结果回来。

有任何想法吗?任何其他原语来获取 sybase 中临时表的列名?

最佳答案

我很抱歉,但我没有 Sybase 来尝试这个。但是,我可以给您我认为的答案,但您可能需要花些功夫才能使语法正确。基本上,根据文档,您可以使用 sp_help只要您从 tempdb 执行临时表上的命令.以下是来自 Sybase 的报价:

System procedures such as sp_help work on temporary tables only if you invoke them from tempdb.

Reference


以下是使用 sp_help 命令的方法:
http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.help.ase_15.0.sprocs/html/sprocs/sprocs118.htm OBJECT_ID(tempdb..#mytable)的原因命令不起作用是因为该表中不存在该表名。原因是 Sybase 确保所有临时表都是唯一的。为此,它采用临时表名称(包括井号)并将其截断为 13 个字符,附加下划线使其为 13 个字符(以防它很短),并将 17 位 session ID 添加到表名的结尾。通过这种方式,您可以拥有一个名为 #mytable 的临时表,而另一个用户(甚至您在另一个 session 中)可以拥有与临时表完全相同的名称,而不会导致冲突。如果您确定了 session ID,则可能可以构建临时表名称。如果您构建了临时表名称,您可以将其分配给一个变量(比如 @newTableName )并使用 SELECT name FROM tempdb..syscolumns WHERE id = OBJECT_ID(@newTableName)方法来检索您的临时表列。

关于sql - 获取 sybase 中临时表的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5937808/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com