程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> Sqlserver淺談用戶定義表類型

Sqlserver淺談用戶定義表類型

編輯:關於SqlServer

      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淺談用戶定義表類型   三聯

      現在我們開始使用用戶定義表類型 編寫存儲過程

      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.用戶定義表類型不能用作表中的列或結構化用戶定義類型中的字段。

    1. 上一頁:
    2. 下一頁:
    Copyright © 程式師世界 All Rights Reserved