首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何检查SQL Server2008中是否存在自定义表类型?

如何检查SQL Server2008中是否存在自定义表类型?
EN

Stack Overflow用户
提问于 2010-03-23 03:32:04
回答 4查看 120.5K关注 0票数 186

我有一个用户定义的表类型。我想在使用OBJECT_ID(name, type)函数编辑补丁之前检查它的存在。

对于用户定义的表类型,应该从enumeration传递什么type

N'U' like for user defined table不起作用,例如IF OBJECT_ID(N'MyType', N'U') IS NOT NULL

EN

回答 4

Stack Overflow用户

发布于 2010-03-23 03:52:39

代码语言:javascript
复制
IF EXISTS (SELECT * FROM sys.types WHERE is_table_type = 1 AND name = 'MyType')
    --stuff

sys.types...它们不是模式作用域的对象,因此不会在sys.objects

更新,2013年3月

您也可以使用TYPE_ID

票数 125
EN

Stack Overflow用户

发布于 2010-03-23 04:01:11

代码语言:javascript
复制
IF EXISTS(SELECT 1 FROM sys.types WHERE name = 'Person' AND is_table_type = 1 AND SCHEMA_ID('VAB') = schema_id)
DROP TYPE VAB.Person;
go
CREATE TYPE VAB.Person AS TABLE
(    PersonID               INT
    ,FirstName              VARCHAR(255)
    ,MiddleName             VARCHAR(255)
    ,LastName               VARCHAR(255)
    ,PreferredName          VARCHAR(255)
);
票数 21
EN

Stack Overflow用户

发布于 2013-07-02 10:00:26

下面的例子适用于我,请注意"is_user_defined“而不是"is_table_type”。

代码语言:javascript
复制
IF TYPE_ID(N'idType') IS NULL
CREATE TYPE [dbo].[idType] FROM Bigint NOT NULL
go

IF not EXISTS (SELECT * FROM sys.types WHERE is_user_defined = 1 AND name = 'idType')
CREATE TYPE [dbo].[idType] FROM Bigint NOT NULL
go
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2495119

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档