240 likes | 417 Views
T-SQL - Techniken und Neuerungen. Jörg Neumann RESCO GmbH Hamburg. Jörg Neumann. IT-Consultant bei der RESCO GmbH in Hamburg. Hält Schulungen und Coachings zum SQL Server 2005 Schreibt für verschiedene Fachzeitschriften Schreibt an einem Buch über den SQL Server 2005
E N D
T-SQL - Techniken und Neuerungen Jörg Neumann RESCO GmbH Hamburg
Jörg Neumann • IT-Consultant bei der RESCO GmbH in Hamburg. • Hält Schulungen und Coachings zum SQL Server 2005 • Schreibt für verschiedene Fachzeitschriften • Schreibt an einem Buch über den SQL Server 2005 • Hält Vorträge auf Entwicklerkonferenzen • Schwerpunkte: • SQL Server • Smart Clients • Visual Studio Extensibility • Links zu weiterführenden Artikeln und Büchern finden Sie am Ende der Slides. • Kontakt: Joerg.Neumann@RESCO.de
Agenda • Kreuztabellen • Abfrage von hierarchischen Daten • Fehlerbehandlung
Agenda • Kreuztabellen • Abfrage von hierarchischen Daten • Fehlerbehandlung
Beispiel Umsatzliste aller Mitarbeiter pro Quartal
Lösungswege • UNION • Temporäre Tabellen • User Defined Functions • PIVOT-Klausel (SQL2005)
Demo Kreuztabellen
PIVOT / UNPIVOT • PIVOT transformiert ein flaches Resultset in eine Kreuztabelle • UNPIVOT transformiert eine Kreuztabelle in ein flaches Resultset • ANSI SQL-99-Standard
PIVOT Beispiel Umsatzliste aller Mitarbeiter pro Quartal SELECT Employee, [1], [2], [3], [4] FROM (SELECT Employee, Amount, Quarter FROM Orders )AS Orders PIVOT (SUM (Amount) FOR Quarter IN ([1],[2],[3],[4]) )AS PV ORDER BY Employee Query Subquery PIVOT Block
Agenda • Kreuztabellen • Abfrage von hierarchischen Daten • Fehlerbehandlung
Vorstand Produktion Einkauf Verkauf Verkauf Inland Controlling Verkauf Ausland Finanzen Finanzbuchhaltung Lonhbuchhaltung Beispiel Eine Abteilung inkl. aller Unterabteilungen des Unternehmens ermitteln
Lösungswege • Cursor • Schleife • Common Table Expressions (SQL2005)
Demo HierarchischeDaten
Common Table Expressions • Eine CTE definiert ein Abfrage, die innerhalb eines Statements wieder verwendet werden kann • Vergleichbar mit einer View auf Statement-Ebene • ANSI SQL-92-Standard • Nützlich beim Umgang mit hierarchischen Daten • Als Ersatz für • Redundante Unterabfragen • Views, die nur von einem Statement verwendet werden • Rekursive Prozeduraufrufe • Cursor-Läufe • Optimierter Ausführungsplan
Anchor Query Rekursion Zugriff CTE Beispiel WITH CTE(Department, ParentDepartment) AS ( SELECT Department, ParentDepartment FROM Departments WHERE ParentDepartment ='Finzanzen' UNION ALL SELECT Departments.Department, Departments.ParentDepartment FROM Departments INNER JOIN CTE ON Departments.ParentDepartment = CTE.Department ) SELECT Department FROM CTE
WITH DepartmentsCTE(Department, ParentDepartment) AS(SELECT …), Employees(ID, Name) AS(SELECT …) Weitere Optionen • Es können auch mehrere CTEs in einem WITH-Block definiert werden • Die maximale Rekursionsstufe ist einstellbar • Erzeugt Fehler beim Überschreiten WITH DepartmentsCTE(Department, ParentDepartment) AS ( … ) SELECT Department FROM DepartmentsCTE OPTION(MAXRECURSION 2)
Agenda • Kreuztabellen • Abfrage von hierarchischen Daten • Fehlerbehandlung
BEGIN TRY { sql_statement | statement_block } END TRY BEGIN CATCH { sql_statement | statement_block } END CATCH Fehlerbehandlung • Exception-basierte Fehlerbehandlung • Try/Catch (kein Finally) • Kann geschachtelt werden • Vorteil: @@error muss nicht nach jedem Statement abgefragt werden • Syntax:
TRY/CATCH • Setzt die laufende Transaktion in einen uncommited-Status • Nur Lesezugriffe oder Rollback möglich • Auslösen eines Fehlers mit RAISERROR Einschränkungen: • Es werden nur Fehler mit Schweregrad (Severity) 11-20 verarbeitet • Connection-Abbruch oder KILL wird nicht berücksichtigt • Prozedur- oder Funktionsaufrufe werden nicht unterbrochen
Fehler verarbeiten • Informationen ermitteln: • ERROR_NUMBER() • ERROR_SEVERITY() • ERROR_STATE() • ERROR_PROCEDURE() • ERROR_LINE() • ERROR_MESSAGE() • Fehlerinformationen vor Rollback ermitteln • Informationen nach Rollback speichern
Demo Fehlerbehandlung
Ressourcen Bücher • A First Look at SQL Server 2005 for Developers Bob Beauchemin u.a., Addison-Wesley, ISBN: 0321180593 Artikel • SQL Server 2005 Transact-SQL Enhancementshttp://msdn.microsoft.com/sql/default.aspx?pull=/library/en-us/dnsql90/html/sql_05TSQLEnhance.asp Links • SQL Server 2005 Developer Centerhttp://www.msdn.microsoft.com/SQL/2005/ • T-SQL Enhancements Virtual Labhttp://msdn.microsoft.com/vstudio/tryit/hosted/sql/tsqlenhancements/
jobs@resco ----- gesucht ----- IT-Berater (m/w) mit Schwerpunkt Microsoft .NET, SQL Server, Sharepoint, BizTalk Server Standorte: Hamburg, Frankfurt, Düsseldorf ... vielen Dank für Ihre Aufmerksamkeit Resco GmbH Millerntorplatz 1D-20359 HamburgGermanywww.resco.de