Sql-Server

獲取所有表類型的名稱和定義

  • May 14, 2019

我知道如何創建表類型(用作表值參數) - 但是一旦創建,我如何查看它?

您可以看到名稱列表:

SELECT name FROM sys.table_types;

要查看定義,您可以轉到對象資源管理器:

在此處輸入圖像描述

如果您想自動執行此操作,至少對於列/數據類型(這不包括索引、鍵等),您可以建構以下內容:

DECLARE @sql nvarchar(max) = N'', 
 @stub nvarchar(max) = N'SELECT N''$--obj--$'', 
  name, system_type_name
  FROM sys.dm_exec_describe_first_result_set(''DECLARE 
  @tvp $--obj--$; SELECT * FROM @tvp;'',null,null)
  ORDER BY column_ordinal;';

SELECT @sql += REPLACE(@stub, N'$--obj--$', 
 QUOTENAME(s.name) + N'.' + QUOTENAME(t.name))
FROM sys.table_types AS t
INNER JOIN sys.schemas AS s
ON t.[schema_id] = s.[schema_id];

EXEC sys.sp_executesql @sql;

這會產生如下輸出(每種表類型一個結果集):

在此處輸入圖像描述

當然,如果你用撇號命名了一個表類型,它會出錯——不要那樣做)。

引用自:https://dba.stackexchange.com/questions/161368