我正在阅读有关表值参数的内容,这看起来很有趣..但我想知道,当我们在数据库中定义表类型时,它会被保存吗?它的范围是什么?我如何修改该类型..假设我创建了一个表类型为...
CREATE TYPE DeptType AS TABLE
(
DeptId INT, DeptName VARCHAR(30)
);
现在我怎样才能获得DeptType的架构?在存储过程的情况下,它就像sp_helptext [ProcedureName]
一样简单。我怎么修改它?这种类型的范围是什么?
答案 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
再次改变它的形式。不幸的是,要这样做,你必须首先删除所有依赖对象,然后删除类型,然后创建它,然后重新创建所有依赖对象。