Date post: | 14-Jan-2017 |
Category: |
Technology |
Upload: | digicomp-academy-ag |
View: | 469 times |
Download: | 1 times |
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’