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:
Agenda Kreuztabellen Abfrage von hierarchischen Daten Fehlerbehandlung
Agenda Kreuztabellen Abfrage von hierarchischen Daten Fehlerbehandlung
Beispiel Name1234 Buchanan, Steven23431,908462, , ,45 Callahan, Laura52356, , , ,37 Davolio, Nancy60476, , , ,70 Dodsworth, Anne35498, , , ,95 Umsatzliste aller Mitarbeiter pro Quartal NameAmountQuarter Buchanan, Steven23431,901 Buchanan, Steven8462,402 Buchanan, Steven15365,003 Buchanan, Steven28308,454 Callahan, Laura52356,051 Callahan, Laura25487,812...
Lösungswege UNION Temporäre Tabellen User Defined Functions PIVOT-Klausel (SQL2005)
Demo Kreuztabellen
PIVOT / UNPIVOT PIVOT PIVOT transformiert ein flaches Resultset in eine Kreuztabelle UNPIVOT UNPIVOT transformiert eine Kreuztabelle in ein flaches Resultset ANSI SQL-99-Standard
PIVOT Beispiel Umsatzliste aller Mitarbeiter pro Quartal Query Subquery PIVOT Block SELECTEmployee, [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
Agenda Kreuztabellen Abfrage von hierarchischen Daten Fehlerbehandlung
Beispiel Eine Abteilung inkl. aller Unterabteilungen des Unternehmens ermitteln VorstandProduktionEinkaufVerkaufVerkauf InlandVerkauf AuslandFinanzenControllingFinanzbuchhaltungLonhbuchhaltung DepartmentParentDepartment Vorstandnull ProduktionVorstand EinkaufVorstand VerkaufVorstand Verkauf InnlandVerkauf Verkauf AuslandVerkauf FinanzenVorstand ControllingFinanzen FinanzbuchhaltungControlling LohnbuchhaltungControlling
Lösungswege Cursor Schleife Common Table Expressions (SQL2005)
Demo Hierarchische Daten
Common Table Expressions CTE 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
WITH WITH CTE(Department, ParentDepartment) AS ( SELECTDepartment, ParentDepartment FROMDepartments WHEREParentDepartment = 'Finzanzen' UNION ALL SELECTDepartments.Department, Departments.ParentDepartment FROMDepartments INNER JOIN CTE ON Departments.ParentDepartment = CTE.Department ) SELECT Department FROM CTE Query Rekursion Anchor CTE Beispiel Zugriff
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) WITH DepartmentsCTE(Department, ParentDepartment) AS(SELECT …), Employees(ID, Name) AS(SELECT …)
Agenda Kreuztabellen Abfrage von hierarchischen DatenFehlerbehandlung
Fehlerbehandlung Exception-basierte Fehlerbehandlung Try/Catch (kein Finally) Kann geschachtelt werden Vorteil: muss nicht nach jedem Statement abgefragt werden Syntax: BEGIN TRY { sql_statement | statement_block } END TRY BEGIN CATCH { sql_statement | statement_block } END CATCH
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) 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
Fragen?
Ressourcen Bücher A First Look at SQL Server 2005 for Developers Bob Beauchemin u.a., Addison-Wesley, ISBN: Artikel SQL Server 2005 Transact-SQL Enhancements us/dnsql90/html/sql_05TSQLEnhance.asp Links SQL Server 2005 Developer Center T-SQL Enhancements Virtual Lab
Resco GmbH Millerntorplatz 1 D Hamburg Germany vielen Dank für Ihre Aufmerksamkeit gesucht IT-Berater (m/w) mit Schwerpunkt Microsoft.NET, SQL Server, Sharepoint, BizTalk Server Standorte: Hamburg, Frankfurt, Düsseldorf