• 工作总结
  • 工作计划
  • 心得体会
  • 述职报告
  • 思想汇报
  • 发言讲话稿
  • 演讲稿
  • 申请书
  • 读后感
  • 报告材料
  • 策划方案
  • 当前位置: 写作资料库 > 其他范文 > 正文

    sqlserver使用教程 Sqlserver浅谈用户定义表类型

    时间:2018-08-15 16:25:13 来源:写作资料库 本文已影响 写作资料库手机站

    1.1 简介

    SQL Server 中,用户定义表类型是指用户所定义的表示表结构定义的类型。您可以使用用户定义表类型为存储过程或函数声明表值参数,或者声明您要在批处理中或在存储过程或函数的主体中使用的表变量。

    若要创建用户定义表类型,请使用CREATE TYPE语句。为了确保用户定义表类型的数据满足特定要求,您可以对用户定义表类型创建唯一约束和主键。

    1.2 使用例题

    在创建用户定义表类型前先建立一个数据库表

    USE [Contacting]

    GO

    SET ANSI_NULLS ON

    GO

    SET QUOTED_IDENTIFIER ON

    GO

    SET ANSI_PADDING ON

    GO

    CREATE 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]

    GO

    SET ANSI_PADDING OFF

    GO

    ALTER TABLE [dbo].[Contact] ADD DEFAULT (getdate()) FOR [Created]

    GO

    然后创建一个用户定义表类型 InsertContacts

    USE [Contacting]

    GO

    CREATE 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)

    )

    GO

    SQL Server Management Studio看到的结果如下:

    Sqlserver浅谈用户定义表类型1

    现在我们开始使用用户定义表类型 编写存储过程

    USE [Contacting]

    GO

    CREATE PROCEDURE [dbo].[InsertContacts]

    @contacts AS ContactStruct READONLY

    AS

    INSERT INTO Contact(ContactID, FirstName, LastName, Email, Phone)

    SELECT ContactID, FirstName, LastName, Email, Phone FROM @contacts;

    RETURN 0

    1.3 使用限制(很遗憾无法在表值参数中返回数据。 表值参数是只可输入的参数;不支持 OUTPUT 关键字。)

    请注意,用户定义表类型使用有以下限制:

    1.在创建用户定义表类型定义后不能对其进行修改。(没搞懂为什么不可以修改)

    2.不能在用户定义表类型的计算列的定义中调用用户定义函数。

    3.无法对用户定义表类型创建非聚集索引,除非该索引是对用户定义表类型创建PRIMARY KEY 或UNIQUE约束的结果。

    4.用户定义表类型不能用作表中的列或结构化用户定义类型中的字段。