24
T-SQL - Techniken und Neuerungen Jörg Neumann RESCO GmbH Hamburg

T-SQL - Techniken und Neuerungen Jörg Neumann RESCO GmbH Hamburg

Embed Size (px)

Citation preview

Page 1: T-SQL - Techniken und Neuerungen Jörg Neumann RESCO GmbH Hamburg

T-SQL - Techniken und Neuerungen

Jörg Neumann

RESCO GmbH

Hamburg

Page 2: T-SQL - Techniken und Neuerungen Jörg Neumann RESCO GmbH Hamburg

Jörg NeumannIT-Consultant bei der RESCO GmbH in Hamburg.Hält Schulungen und Coachings zum SQL Server 2005Schreibt für verschiedene FachzeitschriftenSchreibt an einem Buch über den SQL Server 2005Hält Vorträge auf EntwicklerkonferenzenSchwerpunkte:

SQL ServerSmart ClientsVisual Studio Extensibility

Links zu weiterführenden Artikeln und Büchern finden Sie am Ende der Slides.Kontakt: [email protected]

Page 3: T-SQL - Techniken und Neuerungen Jörg Neumann RESCO GmbH Hamburg

Agenda

Kreuztabellen

Abfrage von hierarchischen Daten

Fehlerbehandlung

Page 4: T-SQL - Techniken und Neuerungen Jörg Neumann RESCO GmbH Hamburg

Agenda

KreuztabellenKreuztabellen

Abfrage von hierarchischen Daten

Fehlerbehandlung

Page 5: T-SQL - Techniken und Neuerungen Jörg Neumann RESCO GmbH Hamburg

Beispiel

Name 1 2 3 4

Buchanan, Steven 23431,90 8462,40 15365,00 28308,45

Callahan, Laura 52356,05 25487,81

27091,80 28365,37

Davolio, Nancy 60476,58 36195,55

48487,88 56983,70

Dodsworth, Anne 35498,55 14013,80

17323,70 16127,95

Umsatzliste aller Umsatzliste aller Mitarbeiter pro QuartalMitarbeiter pro Quartal

Name Amount Quarter

Buchanan, Steven 23431,90 1

Buchanan, Steven 8462,40 2

Buchanan, Steven 15365,00 3

Buchanan, Steven 28308,45 4

Callahan, Laura 52356,05 1

Callahan, Laura 25487,81 2

... ... ...

Page 6: T-SQL - Techniken und Neuerungen Jörg Neumann RESCO GmbH Hamburg

Lösungswege

UNIONTemporäre TabellenUser Defined FunctionsPIVOT-Klausel (SQL2005)

Page 7: T-SQL - Techniken und Neuerungen Jörg Neumann RESCO GmbH Hamburg

DemoDemo

KreuztabellenKreuztabellen

Page 8: T-SQL - Techniken und Neuerungen Jörg Neumann RESCO GmbH Hamburg

PIVOT / UNPIVOT

PIVOTPIVOT transformiert ein flaches Resultset in eine KreuztabelleUNPIVOTUNPIVOT transformiert eine Kreuztabelle in ein flaches ResultsetANSI SQL-99-Standard

Page 9: T-SQL - Techniken und Neuerungen Jörg Neumann RESCO GmbH Hamburg

PIVOT BeispielUmsatzliste aller Umsatzliste aller Mitarbeiter pro QuartalMitarbeiter pro Quartal

QueryQuery

SubquerySubquery

PIVOT BlockPIVOT Block

SELECT Employee, [1], [2], [3], [4]FROM( SELECT Employee,

Amount, Quarter

FROM Orders) AS OrdersPIVOT( SUM (Amount)

FOR QuarterIN ([1], [2], [3], [4])

) AS PVORDER BY Employee

Page 10: T-SQL - Techniken und Neuerungen Jörg Neumann RESCO GmbH Hamburg

Agenda

Kreuztabellen

Abfrage von hierarchischen DatenAbfrage von hierarchischen Daten

Fehlerbehandlung

Page 11: T-SQL - Techniken und Neuerungen Jörg Neumann RESCO GmbH Hamburg

BeispielEine Abteilung inkl. aller Eine Abteilung inkl. aller Unterabteilungen des Unterabteilungen des Unternehmens ermittelnUnternehmens ermittelnVorstand

Produktion

Einkauf

Verkauf

Verkauf Inland

Verkauf Ausland

Finanzen

Controlling

Finanzbuchhaltung

Lonhbuchhaltung

Department ParentDepartment

Vorstand null

Produktion Vorstand

Einkauf Vorstand

Verkauf Vorstand

Verkauf Innland Verkauf

Verkauf Ausland Verkauf

Finanzen Vorstand

Controlling Finanzen

Finanzbuchhaltung Controlling

Lohnbuchhaltung Controlling

Page 12: T-SQL - Techniken und Neuerungen Jörg Neumann RESCO GmbH Hamburg

Lösungswege

CursorSchleifeCommon Table Expressions (SQL2005)

Page 13: T-SQL - Techniken und Neuerungen Jörg Neumann RESCO GmbH Hamburg

DemoDemo

HierarchischeHierarchischeDatenDaten

Page 14: T-SQL - Techniken und Neuerungen Jörg Neumann RESCO GmbH Hamburg

Common Table ExpressionsEine CTECTE definiert ein Abfrage, die innerhalb eines Statements wieder verwendet werden kannVergleichbar mit einer View auf Statement-EbeneANSI SQL-92-StandardNützlich beim Umgang mit hierarchischen DatenAls Ersatz für

Redundante UnterabfragenViews, die nur von einem Statement verwendet werdenRekursive ProzeduraufrufeCursor-Läufe

Optimierter Ausführungsplan

Page 15: T-SQL - Techniken und Neuerungen Jörg Neumann RESCO GmbH Hamburg

WITHWITH CTE(Department, ParentDepartment)AS(

SELECT Department,ParentDepartment

FROM DepartmentsWHERE ParentDepartment = 'Finzanzen'

UNION ALL

SELECT Departments.Department,Departments.ParentDepartment

FROM Departments INNER JOIN CTE ONDepartments.ParentDepartment = CTE.Department

)SELECT DepartmentFROM CTE

QueryQuery

RekursionRekursion

AnchorAnchor

CTE Beispiel

ZugriffZugriff

Page 16: T-SQL - Techniken und Neuerungen Jörg Neumann RESCO GmbH Hamburg

Weitere OptionenEs 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 DepartmentFROM DepartmentsCTEOPTION(MAXRECURSION 2)

WITH DepartmentsCTE(Department, ParentDepartment)AS(SELECT …),Employees(ID, Name)AS(SELECT …)

Page 17: T-SQL - Techniken und Neuerungen Jörg Neumann RESCO GmbH Hamburg

Agenda

Kreuztabellen

Abfrage von hierarchischen Daten

FehlerbehandlungFehlerbehandlung

Page 18: T-SQL - Techniken und Neuerungen Jörg Neumann RESCO GmbH Hamburg

FehlerbehandlungException-basierte FehlerbehandlungTry/Catch (kein Finally)Kann geschachtelt werdenVorteil: @@error muss nicht nach jedem Statement abgefragt werdenSyntax:BEGIN TRY { sql_statement | statement_block }END TRY

BEGIN CATCH { sql_statement | statement_block }END CATCH

Page 19: T-SQL - Techniken und Neuerungen Jörg Neumann RESCO GmbH Hamburg

TRY/CATCHSetzt die laufende Transaktion in einen uncommited-Status

Nur Lesezugriffe oder Rollback möglichAuslösen eines Fehlers mit RAISERROR Einschränkungen:

Es werden nur Fehler mit Schweregrad (Severity) 11-20 verarbeitetConnection-Abbruch oder KILL wird nicht berücksichtigtProzedur- oder Funktionsaufrufe werden nicht unterbrochen

Page 20: T-SQL - Techniken und Neuerungen Jörg Neumann RESCO GmbH Hamburg

Fehler verarbeitenInformationen ermitteln:

ERROR_NUMBER()ERROR_SEVERITY()ERROR_STATE()ERROR_PROCEDURE()ERROR_LINE()ERROR_MESSAGE()

Fehlerinformationen vor Rollback ermittelnInformationen nach Rollback speichern

Page 21: T-SQL - Techniken und Neuerungen Jörg Neumann RESCO GmbH Hamburg

DemoDemo

FehlerbehandlungFehlerbehandlung

Page 22: T-SQL - Techniken und Neuerungen Jörg Neumann RESCO GmbH Hamburg

????Fragen?

Page 23: T-SQL - Techniken und Neuerungen Jörg Neumann RESCO GmbH Hamburg

RessourcenBücher

A First Look at SQL Server 2005 for Developers Bob Beauchemin u.a., Addison-Wesley, ISBN: 0321180593

ArtikelSQL Server 2005 Transact-SQL Enhancementshttp://msdn.microsoft.com/sql/default.aspx?pull=/library/en-us/dnsql90/html/sql_05TSQLEnhance.asp

LinksSQL Server 2005 Developer Centerhttp://www.msdn.microsoft.com/SQL/2005/

T-SQL Enhancements Virtual Labhttp://msdn.microsoft.com/vstudio/tryit/hosted/sql/tsqlenhancements/

Page 24: T-SQL - Techniken und Neuerungen Jörg Neumann RESCO GmbH Hamburg

Resco GmbHMillerntorplatz 1D-20359 HamburgGermany

www.resco.de

... vielen Dank für Ihre Aufmerksamkeit

jobs@resco

----- gesucht -----

IT-Berater (m/w) mit Schwerpunkt Microsoft .NET, SQL Server, Sharepoint, BizTalk Server

Standorte: Hamburg, Frankfurt, Düsseldorf