如何确定 MS SQL Server 2005 中表值变量的内部名称

2023-11-23

可以使用以下命令确定临时表的名称,例如#t1

select @TableName = [Name]
from tempdb.sys.tables 
where [Object_ID] = object_id('tempDB.dbo.#t1')

如何找到表值变量的名称,即由

declare @t2 as table (a int)

目的是能够使用类似的方法获取有关表的元信息

select @Headers = dbo.Concatenate('[' + c.[Name] + ']')  
from  sys.all_columns c
    inner join sys.tables t
        on c.object_id = t.object_id
where t.name = @TableName

虽然对于临时表你必须查看tempdb.sys.tables代替sys.tables。您在哪里寻找表值变量?


我现在意识到我不能做我想做的事,即编写一个通用函数来将表值变量格式化为 html 表。对于初学者来说,在 sql server 2005 中您无法传递表值参数:

http://www.sqlteam.com/article/sql-server-2008-table-valued-parameters

此外,在sql server 2008中,参数必须是强类型的,因此您将始终知道列的数量和类型。


表变量元数据可在以下位置查看tempdb.sys.tables也。从下面可以很容易地验证这一点

declare @t2 as table ( [38F055D8-25D9-4AA6-9571-F436FE] int)

SELECT t.name, t.object_id
FROM tempdb.sys.tables t
JOIN tempdb.sys.columns c
ON t.object_id = c.object_id 
WHERE c.name = '38F055D8-25D9-4AA6-9571-F436FE'

结果示例

name                           object_id
------------------------------ -----------
#4DB4832C                      1303675692

但您会注意到对象名称是自动生成的,与变量名称无关。

如果您没有保证唯一的列名可用于按上述方式进行筛选,并且表变量中至少有一行,您可以(从 SQL Server 2008 开始)使用%%physloc%% and DBCC PAGE以确定此信息。下面的例子。

DECLARE @t2 AS TABLE ( a INT)

INSERT INTO @t2
VALUES      (1)

DECLARE @DynSQL NVARCHAR(100)

SELECT TOP (1) @DynSQL = 'DBCC PAGE(2,' + CAST(file_id AS VARCHAR) + ',' + 
                                          CAST( page_id AS VARCHAR) +
                                        ',1) WITH TABLERESULTS'
FROM   @t2
       CROSS APPLY sys.fn_PhysLocCracker( %% physloc %% )

DECLARE @DBCCPage TABLE (
  [ParentObject] [VARCHAR](100) NULL,
  [Object]       [VARCHAR](100) NULL,
  [Field]        [VARCHAR](100) NULL,
  [VALUE]        [VARCHAR](100) NULL )

INSERT INTO @DBCCPage
EXEC (@DynSQL)

SELECT VALUE                 AS object_id,
       OBJECT_NAME(VALUE, 2) AS object_name
FROM   @DBCCPage
WHERE  Field = 'Metadata: ObjectId'  
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何确定 MS SQL Server 2005 中表值变量的内部名称 的相关文章

  • 而不是SQL Server中的触发器丢失SCOPE_IDENTITY?

    我有一个表 我在其中创建了一个INSTEAD OF触发执行一些业务规则 问题是当我将数据插入该表时 SCOPE IDENTITY 返回一个NULL值 而不是实际插入的身份 插入 范围代码 INSERT INTO dbo Payment Da
  • 如何将 Byte[] 转换为数据以在 SQL Server 中的 varbinary(max) 列中插入值?

    我有一个对象byte 属性 我想将此值转换为正确的值 以便可以使用 T SQL 将其插入数据库 但我不知道如何转换byte 为 T SQL 插入的正确值 Thanks 创建一个控制台应用程序项目并尝试此代码 Sample Class pub
  • 函数 SQL 中的函数

    我可以在表值函数中调用标量函数吗 Thanks 是的 只要表值函数完成后返回一个表即可 用户自定义函数可以嵌套 也就是说 一个用户定义的函数可以 呼叫另一个 嵌套级别为 被调用函数时递增 开始执行 并在以下时间递减 被调用函数完成 执行 用
  • IF EXISTS (SELECT 1...) 与 IF EXISTS (SELECT TOP 1 1...)

    这是一个纯粹的学术问题 这两个陈述实际上是相同的吗 IF EXISTS SELECT TOP 1 1 FROM Table1 SELECT 1 ELSE SELECT 0 Versus IF EXISTS SELECT 1 FROM Tab
  • T-SQL Cross Join 获取缺失值

    这是我的问题的一个简单例子 我有一个创建报告的存储过程 DECLARE Report TABLE Product VARCHAR 10 Purchases MONEY default 0 DECLARE Range TABLE minP M
  • 从长到宽 - SQL [重复]

    这个问题在这里已经有答案了 我有一张很长的桌子 例如 Date Person Number 2015 01 03 A 4 2015 01 04 A 2 2015 01 05 A 3 2015 01 03 B 5 2015 01 04 B 6
  • 如何在 T-SQL 中实现 ZIP JOIN?

    假设我有表 Foo Id Color 1 Red 2 Green 3 Blue 4 NULL 和表 Bar Value 1 2 5 我想使用简单的语句创建表 Result 来获取 Id Color Value 1 Red 1 2 Green
  • 如何在SSRS 2012中显示基于总金额的前10名

    我只需要显示前 10 名Class基于Total SUM Premium 柱子 我转到类代码属性组 gt 过滤器并按 SUM Net Written Premium 设置前 10 名 但它不起作用 我只需要显示前 10 名 而且总金额也应该
  • 正则表达式 '?' 的类似物(前一项可选)在T-SQL中像什么?

    我想知道 是否可以翻译包含 的正则表达式 前面的项目可选 在 T SQL LIKE 模式中 DB 端无需任何操作 例如 31 4 我可以将其分成几个子句 但如果正则表达式包含很多 这不太方便 LIKE不使用正则表达式 并且它使用的模式语言没
  • 选择具有 SQL Server XML 列类型的特定行

    我正在尝试从类似于以下定义的表中选择数据 Column Data Type Id Int DataType Int LoggedData XML 但我只想选择具有特定 DataType 值并且在 LoggedData 列中包含字符串 或评估
  • 删除 IF ELSE 语句中的临时表

    我在这里面临僵局 问题是我必须更改使用 3 个不同临时表的过程 为了便于对话 让我们将它们命名为 temptable1 temptable2 temptable3 我无法在这里复制 粘贴整个过程 但总体思路是这样的 原始过程 procedu
  • 如何在 SQL Server 中连接

    我的数据库没有特定的列 因此我通过开关在查询中创建了一个列 我需要的是将此列与数据库中的另一列连接起来 select certificateDuration DurationType case when certificateDuratio
  • 返回日期为 null 作为 t-sql 中的最大值

    我有这张桌子 ID Date Value 3241 9 17 12 5 3241 9 16 12 100 3241 9 15 12 20 4355 9 16 12 12 4355 9 15 12 132 4355 9 14 12 4 100
  • 在 SQL Server 2005/2008 中存储历史数据的最佳方式是什么?

    我的简化和人为的示例如下 假设我想每天测量和存储世界上所有城镇的温度 和其他值 我正在寻找一种存储数据的最佳方法 以便可以轻松获取所有城镇的当前温度 就像获取一个城镇历史上的所有温度一样 这是一个很容易解决的问题 但我正在寻找最好的解决方案
  • MS SQL Server 2008:获取接下来 8 周的开始日期和结束日期

    我是 SQL 新手 任何人都可以给我查询这种情况 我需要显示从今天的日期到接下来 8 周的一周的开始日期和结束日期 例如 如果我选择今天的日期 它应该显示 开始日期 结束日期 17 03 2012 2012年3月23日 2012 年 3 月
  • 在 SQL Server 中使用透视(错误)- 列名无效

    SELECT Reg number Surname SESREFDATETIME1 ATTENDANCE1 SESREFDATETIME2 ATTENDANCE2 SESREFDATETIME3 ATTENDANCE3 SESREFDATE
  • SQL - 添加从条件开始的顺序计数器列,具有分组依据和非递增 ID

    这个问题的棘手版本 SQL 添加从条件开始的顺序计数器列 https stackoverflow com questions 57897292 sql add sequential counter column starting at co
  • SQL proc计算7位和12位upc的校验位

    我不得不再次在互联网上搜索这段代码 所以我想我会把它放在这里 这样我下次就能更快地找到它 希望你也能更快地找到它 检查一下 下面的代码可以检查所有 GTIN 中的数字 EAN8 EAN13 EAN14 UPC A UPC E CREATE
  • 仅当列不为 NULL 时才连接列

    我有一个像这样的 SQL Server 表 PERSON NAME PHONE PHONE1 PHONE2 PHONE CONCAT Name1 12345 Null Null Null
  • SQL:从单个查询列出多对多

    我有 3 个表 分别代表 Users Roles 和多对多 UsersInRoles 键为 UserId RoleId 相关列 用户名 角色名 在管理 html 应用程序中 我想显示所有用户及其所在角色的列表 我尝试从 SQL 构建一个将返

随机推荐

  • 按父 ID 的顺序选择记录

    简单的问题 只是无法按照我需要的顺序获得结果集 p 我有一个表 类别 id name parent 1 apple 0 2 macintosh 1 3 atari 0 4 st 3 5 lisa 1 我试图选择获取以下结果集 1 apple
  • Azure Web 应用程序的数据库连接速度慢

    我开发了一个 Web 应用程序 一个标准的 Web 应用程序 允许用户显示和更新 SQL 数据库中的一组数据 Web 应用程序使用 AngularJS 客户端 该客户端通过 MVC Web API 调用与 Web 服务器交互 以检索和更新数
  • 如何动态更改角度服务实现?

    我是 Angular2 的新手 并且我有两项服务DefaultService And SpecialService应根据组件状态交替使用 我不知道是否可以将单例注入到我的组件中GeneralService以某种方式表现得像DefaultSe
  • 禁用时间轴上的照片分组

    有谁知道Facebook何时将时间轴上同一相册中的照片分组 有可能阻止它这样做吗 如果您每天 通过 API 发布一张或两张图片 并带有指向其他网站的反向链接 并且 Facebook 将这些内容分组 那么其中一个链接可能永远不会被其他人看到
  • Jasmine.js 测试 - 监视 window.open

    JS var link this notificationDiv getElementsByTagName a 0 link addEventListener click function evt evt preventDefault vi
  • 类型“Microsoft.Reporting.WebForms.ReportViewer”存在于两者中

    我有一个 ASP NET 应用程序 它引用版本 9 0 0 0 的 Microsoft ReportViewer WebForms 我更改为引用版本 11 0 0 0 的 Microsoft ReportViewer WebForms 现在
  • 如何设置画布大小?

    我有一个名为 SeatsPanel 的类 我在 onDraw 方法中绘制座位 使用 drawRect onDraw方法使用Canvas作为参数 但是如何设置Canvas的大小呢 我之所以问这个问题是因为这个类在另一个类中被夸大了 我知道画布
  • R:合并同一数据表中的行,连接某些列

    我在 R 中有我的数据表 我想合并具有相同的行customerID 然后连接其他合并列的元素 我想从这里开始 title author customerID 1 title1 author1 1 2 title2 author2 2 3 t
  • 在 Android 中运行单元测试时,意图解析为不同的进程

    我有一个使用两个活动的小型应用程序 这两个活动都继承自 MapActivity 并显示地图 com google android maps 由于 Android 谷歌地图文档说 每个仅支持一个 MapActivity 过程 多个地图活动 同
  • 强制用户在 Java 中填充 varargs 参数的好方法[重复]

    这个问题在这里已经有答案了 我想强制用户在调用构造函数时填写可选参数 public MyClass String params this params params 目前 以下代码有效 new MyClass 我想阻止它 我想到了这一点 p
  • Biopython SeqIO 到 Pandas Dataframe

    我有一个可以轻松解析的 FASTA 文件SeqIO parse 我对提取序列 ID 和序列长度感兴趣 我用这些行来做到这一点 但我觉得它太重了 两次迭代 转换等 from Bio import SeqIO import pandas as
  • 用星号屏蔽Python中的用户输入[重复]

    这个问题在这里已经有答案了 我试图用星号掩盖用户在 IDLE 中输入的内容 这样他们周围的人就看不到他们正在输入 已经输入的内容 我正在使用基本的原始输入来收集他们输入的内容 key raw input Password 用户输入密码后理想
  • QSignalMapper 是如何工作的?

    我在这里发帖后 将信号和槽关联到动态创建的 qcheckbox我需要关联 信号clicked 当我点击一个qCheckBox我的职能cliqueCheckBox QTableWidget monTab int ligne QCheckBox
  • Oracle SQL 中的小于或等于

    updated date 08 Jun 2010 我有一个这样的查询 select from asd whre updated date lt todate 08 Jun 2010 dd MM yy 但我没有得到任何结果 它只有在以下情况下
  • C# 线程和阻塞 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 我想知道哪种方法是以线程安
  • Openlayers:矢量特征而不是标记

    我想在地图上放置一个符号 例如 到目前为止我已经使用了 OpenLayersOpenLayers Layer Markers 代码如下所示 map new OpenLayers Map map layer new OpenLayers La
  • 如何在颤动中设置下拉弹出窗口的动态高度

    我是颤振开发的新手 我正在使用我的应用程序的下拉按钮 打开下拉菜单时 弹出对话框中的文本被剪切 下面我附上了带有编码的屏幕截图 请指导我解决这个问题 DropdownButtonHideUnderline child new Dropdow
  • 赋值<指向常量数组的指针> = <指向数组的指针>:不兼容的指针

    当我编译这样的东西时 double da 3 2 3 4 double pda 3 da double const cpda 3 pda gcc warning MSVC ok 海湾合作委员会警告我 warning initializati
  • 如何调试Python中的MemoryError?跟踪内存使用情况的工具?

    我有一个 Python 程序 当我向它提供一个大文件时 它会因 MemoryError 而终止 有没有什么工具可以用来找出内存的使用情况 该程序在较小的输入文件上运行良好 该程序显然需要一些可扩展性改进 我只是想弄清楚在哪里 正如一位智者曾
  • 如何确定 MS SQL Server 2005 中表值变量的内部名称

    可以使用以下命令确定临时表的名称 例如 t1 select TableName Name from tempdb sys tables where Object ID object id tempDB dbo t1 如何找到表值变量的名称