相关疑难解决方法(0)

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

可以使用确定#t1等临时表的名称

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

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

declare @t2 as table (a int)
Run Code Online (Sandbox Code Playgroud)

目的是能够使用类似的东西获取关于表的元信息

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
Run Code Online (Sandbox Code Playgroud)

虽然对于临时表,你必须查看tempdb.sys.tables而不是sys.tables.你在哪里寻找表值变量?


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

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

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

t-sql

4
推荐指数
2
解决办法
1398
查看次数

如何通过脚本自动生成临时表列和数据类型

我经常在SQL中创建临时表,我正在研究一种为表定义自动生成列名和数据类型的方法,因此我不必每次都查看它们.

比如我运行:

SELECT CustomerID
  ClientID,
  FirstName
  LastName
INTO #Test
From dbo.Customer
Run Code Online (Sandbox Code Playgroud)

最初使用我需要的相应列和数据设置临时表.一旦我完成所有这些,我就回去并取出INTO语句并写下以下内容:

CREATE TABLE #Test
(
...
...
);
Run Code Online (Sandbox Code Playgroud)

我想找到一种方法来自初始创建临时表自动生成列名和数据类型.现在,因为我最初插入自动创建的临时表,我使用这个:

EXEC tempdb..sp_help '#Test';
Run Code Online (Sandbox Code Playgroud)

这给了我所需的一切,而不必查看所有的列数据类型,但我想知道是否有一种方法可以自动生成列名这样的东西.所以auto gen会产生:

CustomerID int,
ClientID int,
FirstName varchar(50),
LastName varchar(50)
Run Code Online (Sandbox Code Playgroud)

这将允许我将其复制并粘贴到我的create table语句中.

sql sql-server sql-server-2008

2
推荐指数
1
解决办法
9576
查看次数

标签 统计

sql ×1

sql-server ×1

sql-server-2008 ×1

t-sql ×1