2023年7月13日发(作者:)
Sqlserver浅谈⽤户定义表类型1.1 简介SQL Server 中,⽤户定义表类型是指⽤户所定义的表⽰表结构定义的类型。您可以使⽤⽤户定义表类型为存储过程或函数声明表值参数,或者声明您要在批处理中或在存储过程或函数的主体中使⽤的表变量。
若要创建⽤户定义表类型,请使⽤CREATE TYPE语句。为了确保⽤户定义表类型的数据满⾜特定要求,您可以对⽤户定义表类型创建唯⼀约束和主键。1.2 使⽤例题
在创建⽤户定义表类型前先建⽴⼀个数据库表USE [Contacting]GOSET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOSET ANSI_PADDING ONGOCREATE TABLE [dbo].[Contact]( [ContactID] [uniqueidentifier] NOT NULL, [FirstName] [nvarchar](80) NOT NULL, [LastName] [nvarchar](80) NOT NULL, [Email] [nvarchar](80) NOT NULL, [Phone] [varchar](25) NULL, [Created] [datetime] NOT NULL,PRIMARY KEY CLUSTERED
( [ContactID] ASC)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON,ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]) ON [PRIMARY]GOSET ANSI_PADDING OFFGOALTER TABLE [dbo].[Contact] ADD DEFAULT (getdate()) FOR [Created]GO然后创建⼀个⽤户定义表类型 InsertContactsUSE [Contacting]GOCREATE TYPE [dbo].[ContactStruct] AS TABLE( [ContactID] [uniqueidentifier] NOT NULL, [FirstName] [nvarchar](80) NOT NULL, [LastName] [nvarchar](80) NOT NULL, [Email] [nvarchar](80) NOT NULL, [Phone] [varchar](25) NOT NULL, PRIMARY KEY CLUSTERED
( [ContactID] ASC)WITH (IGNORE_DUP_KEY = OFF))GOSQL Server Management Studio看到的结果如下:现在我们开始使⽤⽤户定义表类型 编写存储过程USE [Contacting]GOCREATE PROCEDURE [dbo].[InsertContacts] @contacts AS ContactStruct READONLYAS INSERT INTO Contact(ContactID, FirstName, LastName, Email, Phone) SELECT ContactID, FirstName, LastName, Email, Phone FROM @contacts;RETURN 01.3 使⽤限制(很遗憾⽆法在表值参数中返回数据。 表值参数是只可输⼊的参数;不⽀持 OUTPUT 关键字。 )请注意,⽤户定义表类型使⽤有以下限制:
1.在创建⽤户定义表类型定义后不能对其进⾏修改。(没搞懂为什么不可以修改)
2.不能在⽤户定义表类型的计算列的定义中调⽤⽤户定义函数。
3.⽆法对⽤户定义表类型创建⾮聚集索引,除⾮该索引是对⽤户定义表类型创建PRIMARY KEY 或UNIQUE约束的结果。
4.⽤户定义表类型不能⽤作表中的列或结构化⽤户定义类型中的字段。
发布者:admin,转转请注明出处:http://www.yc00.com/xiaochengxu/1689247139a225649.html
评论列表(0条)