表类型在哪里存储在sql server中?我们怎么改变它呢?

时间:2013-09-03 05:38:48

标签: sql sql-server sql-server-2008

我正在阅读有关表值参数的内容,这看起来很有趣..但我想知道,当我们在数据库中定义表类型时,它会被保存吗?它的范围是什么?我如何修改该类型..假设我创建了一个表类型为...

CREATE TYPE DeptType AS TABLE
(
DeptId INT, DeptName VARCHAR(30)
);

现在我怎样才能获得DeptType的架构?在存储过程的情况下,它就像sp_helptext [ProcedureName]一样简单。我怎么修改它?这种类型的范围是什么?

2 个答案:

答案 0 :(得分:1)

尝试此查询 -

SELECT * 
FROM sys.columns c
JOIN sys.table_types tt ON c.[object_id] = tt.type_table_object_id 
WHERE tt.name = 'DeptType'

SELECT * 
FROM sys.objects o
WHERE o.[type] = 'TT'
    AND o.name LIKE 'TT_DeptType%' 

如何修改 -

Database Explorer -> 
  <your db> -> 
    Programmability -> 
      Types -> 
        User-Defined Table Types -> DROP-CREATE script

答案 1 :(得分:1)

  

它的范围是什么?

它属于一个模式,与表,视图,存储过程等相同。对于使用,它只能在它所驻留的同一数据库中使用。无法从另一个数据库引用表类型(即使在同一个实例中),并且在不同数据库中相同声明的两个表类型不可互换。

  

我如何修改该类型

不幸的是,你不能。 SQL命令的模式是,如果CREATE用于使对象存在,则ALTER用于修改该对象(并DROP以删除它)。通过查看ALTER statements,您会注意到没有ALTER TYPE

您可以做的最好的事情是DROP类型,CREATE再次改变它的形式。不幸的是,要这样做,你必须首先删除所有依赖对象,然后删除类型,然后创建它,然后重新创建所有依赖对象。