解析SQL Server 2008對T-SQL語言的增強(3)_Mssql數據庫教程

      編輯Tag賺U幣
      教程Tag:暫無Tag,歡迎添加,賺取U幣!

      推薦:解讀SQL Server數據庫備份的方法
      SQL Server數據庫備份有兩種方式,一種是使用BACKUP DATABASE將數據庫文件備份出去,另外一種就是直接拷貝數據庫文件mdf和日志文件ldf的方式。下面將主要討論一下后者的備份與恢復。

      5. 用戶自定義表數據類型

      現在,SQL Server 提供一種新的用戶自定義數據類型——自定義表數據類型(User-defined Table Types)。它可以作為參數提供給語句、存儲過程或者函數。您還可以為它創建唯一約束和主鍵。

      請使用 CREATE TYPE 語句創建這種數據類型。如:

      以下為引用的內容:

      USEAdventureWorks;
      GO
      /**//*Createauser-definedtabletype*/
      CREATETYPELocationTableTypeASTABLE 
      (LocationNameVARCHAR(50)
      ,CostRateINT);
      GO

      對于表類型,有如下約束:

      1、用戶自定義表類型不能作為表的列或者結構化用戶自定義類型的域。

      2、基于用戶自定義表類型的別名類型。

      3、不允許 NOT FOR REPLICATION 選項。

      4、CHECK 約束需要一個計算列。

      5、在計算列上的主鍵必須包含 NOT NULL 和 PERSISTED 約束。

      6、不能在用戶自定義表類型上創建非簇索引。除非索引是創建 PRIMARY KEY 或 UNIQUE 約束的返回值。

      7、不能指定 DEFAULT 值。

      8、一旦用戶自定義表類型被創建,則它就無法更改。

      9、如果沒有定義用戶自定義表類型上的計算列,則用戶自定義函數無法調用。

      6. 表值參數

      數據庫引擎現在支持一種新的參數類型來引用用戶自定義表類型(參考 5)。表值參數可以發送更多的 SQL Server 數據。

      下面的示例展示了如何使用表值參數。

      以下為引用的內容:

      USEAdventureWorks;
      GO
      /**//*Createatabletype.*/
      CREATETYPELocationTableTypeASTABLE 
      (LocationNameVARCHAR(50)
      ,CostRateINT);
      GO
      /**//*Createaproceduretoreceivedataforthetable-valuedparameter.*/
      CREATEPROCEDUREusp_InsertProductionLocation
        @TVPLocationTableTypeREADONLY
        AS 
        SETNOCOUNTON
        INSERTINTO[AdventureWorks].[Production].[Location]
           ([Name]
           ,[CostRate]
           ,[Availability]
           ,[ModifiedDate])
          SELECT*,0,GETDATE()
          FROM @TVP;
          GO
      /**//*Declareavariablethatreferencesthetype.*/
      DECLARE@LocationTVP 
      ASLocationTableType;
      /**//*Adddatatothetablevariable.*/
      INSERTINTO@LocationTVP(LocationName,CostRate)
        SELECT[Name],0.00
        FROM 
        [AdventureWorks].[Person].[StateProvince];
      /**//*Passthetablevariabledatatoastoredprocedure.*/
      EXECusp_InsertProductionLocation@LocationTVP;
      GO

      分享:解析SQL 2008的Change Data Capture功能
      在常見的企業數據平臺管理中有一項任務是一直困擾SQL Server DBA們的,這就是對數據更新的監控。很多數據應用都需要捕獲對業務數據表的更新。筆者見過幾種解決方案: 1、在數

      來源:模板無憂//所屬分類:Mssql數據庫教程/更新時間:2009-08-01
      相關Mssql數據庫教程