+ All Categories
Home > Technology > New tsql features

New tsql features

Date post: 14-Jan-2017
Category:
Upload: digicomp-academy-ag
View: 469 times
Download: 1 times
Share this document with a friend
15
Digicomp Academy SQL Day Neue T-SQL Features
Transcript

Digicomp Academy SQL Day n Neue T-SQL Features

Ihr Kursleiter n Roland Strauss n Kaufm. Lehre/Programmierer/Analytiker n Selbstständig seit 1984 n SQL Server seit Version 4.2 (1993) n Kursleiter SQL Server seit 1994

Neue Befehle n WITH RESULT SETS n OFFSET AND FETCH n  THROW in Error handling n SEQUENCE n Get Metadata of Resultset

EXEC Proc WITH ... [ WITH <execute_option> [ ,…n ] ] <execute_option>::= {

RECOMPILE | { RESULT SETS UNDEFINED } | { RESULT SETS NONE } | { RESULT SETS ( <result_sets_definition> [,…n] ) }

} <result_sets_definition> ::= {

( { column_name data_type [ COLLATE collation_name ] [ NULL | NOT NULL ] } [,…n ] ) | AS OBJECT [ db_name . [ schema_name ] . | schema_name . ] {table_name | view_name | table_valued_function_name } | AS TYPE [ schema_name.]table_type_name | AS FOR XML

}

WITH RESULT SETS CREATE  PROCEDURE  Denali_WithResultSet  AS  BEGIN        SELECT  1  as  No,’Tsql’  Type,  ‘WithResultSet’  AS  Feature  UNION  ALL      SELECT  2  as  No,’Tsql’  Type,  ‘Throw’  AS  Feature  UNION  ALL      SELECT  3  as  No,’Tsql’  Type,  ‘Offset’  AS  Feature  UNION  ALL      SELECT  4  as  No,’Tsql’  Type,  ‘Sequence’  AS  Feature    END  GO  EXEC  Denali_WithResultSet    WITH  RESULT  SETS  (      (    No    int,  

 FeatureType  varchar(50),    FeatureName    varchar(50)  

   )    )    

OFFSET and FETCH

 ORDER  BY  order_by_expression          [  COLLATE  collation_name  ]            [  ASC  |  DESC  ]            [  ,...n  ]    [  <offset_fetch>  ]      <offset_fetch>  ::=  {            OFFSET  {  integer_constant  |  offset_row_count_expression  }  {  ROW  |  ROWS  }          [              FETCH  {  FIRST  |  NEXT  }  {integer_constant  |  fetch_row_count_expression  }  {  ROW  |  ROWS  }  ONLY          ]  }  

OFFSET and FETCH SELECT  ProductID,  Name    FROM  Production.Product  ORDER  BY  NAME    OFFSET  10  ROWS  FETCH  NEXT  5  ROWS  ONLY  

THROW n Bisher signalisierte man einen Fehler mit RAISERROR  (nnnnn,  16,  1)  

n  Fehlermeldung musste in sys.messages existieren n  Fehler konnte nicht im CATCH-Block wiederholt werden n Mit Throw kann eine beliebige Fehlernummer verwendet werden n Ausführung von Throw ohne Parameter im CATCH Block wiederholt

die auslösende Fehlermeldung

THROW

THROW [ { error_number | @local_variable }, { message | @local_variable }, { state | @local_variable } ] [ ; ]

THROW BEGIN  TRY  

 BEGIN  TRANSACTION  -­‐-­‐  Start  the  transaction    -­‐-­‐  Delete  the  Customer    DELETE  FROM  Customers    WHERE  EmployeeID  =  ‘CACTU’  

   -­‐-­‐  Commit  the  change    COMMIT  TRANSACTION  

END  TRY  BEGIN  CATCH  

 -­‐-­‐  There  is  an  error    ROLLBACK  TRANSACTION    -­‐-­‐  Re  throw  the  exception    THROW  

END  CATCH  

SEQUENCE n Globale IDENTITY n Steht nicht unter Transaktionskontrolle  CREATE  SEQUENCE  [schema_name  .  ]  sequence_name          [  AS  [  built_in_integer_type  |  user-­‐defined_integer_type  ]  ]          [  START  WITH  <constant>  ]          [  INCREMENT  BY  <constant>  ]          [  {  MINVALUE  [  <constant>  ]  }  |  {  NO  MINVALUE  }  ]          [  {  MAXVALUE  [  <constant>  ]  }  |  {  NO  MAXVALUE  }  ]          [  CYCLE  |  {  NO  CYCLE  }  ]          [  {  CACHE  [  <constant>  ]  }  |  {  NO  CACHE  }  ]          [  ;  ]  

SEQUENCE CREATE  SEQUENCE  dbo.Seq  AS  INT  START  WITH  1  INCREMENT  BY  1;    CREATE  TABLE  dbo.Examp1  (      Seq  INT  NOT  NULL,      Name  VARCHAR(50)  NOT  NULL  );   INSERT  INTO  dbo.Examp1(Seq,  Name)  VALUES(NEXT  VALUE  FOR  dbo.Seq,  ‘Tom’);  

   

Get Metadata of ResultSets

n Erzeugt detaillierte Beschreibung des Result Sets

sp_describe_first_result_set    @tsql  =  N’SELECT  *  FROM  customers’    

Andere Erweiterungen n Weiter auf MSDN n  http://msdn.microsoft.com/en-us/library/cc645577.aspx

Kurse Digicomp MOC  10774:  Wri-ng  Queries  with  Microso9  SQL  Server  2012  Transact-­‐SQL  (5  Tage)    


Recommended