In T-SQL haben Sie die Möglichkeit, benutzerdefinierte Typen zu erstellen, um Ihre Datenbankstruktur zu erweitern. Diese benutzerdefinierten Typen ermöglichen es Ihnen, komplexe Datentypen zu definieren, die aus mehreren einfachen Datentypen bestehen können. Sie können diese Typen dann in Tabellen, gespeicherten Prozeduren und Funktionen verwenden.

Erstellen eines benutzerdefinierten Typs

Um einen benutzerdefinierten Typ in T-SQL zu erstellen, verwenden Sie das CREATE TYPE-Statement. Es gibt zwei Arten von benutzerdefinierten Typen: Tabellentypen und Skalartypen. Schauen wir uns beide an:

Tabellentypen

Tabellentypen ermöglichen es Ihnen, eine Struktur zu definieren, die einer Tabelle ähnelt. Sie können Spalten und Datentypen für den Tabellentyp festlegen. Hier ist ein Beispiel, wie Sie einen Tabellentyp erstellen:

CREATE TYPE dbo.EmployeeTableType AS TABLE
(
    EmployeeID INT,
    FirstName VARCHAR(50),
    LastName VARCHAR(50)
);

In diesem Beispiel haben wir einen Tabellentyp mit den Spalten EmployeeID, FirstName und LastName erstellt. Sie können nun diesen Typ verwenden, um Variablen zu deklarieren oder als Parameter in gespeicherten Prozeduren und Funktionen zu verwenden.

Skalartypen

Skalartypen ermöglichen es Ihnen, einen benutzerdefinierten Datentyp zu erstellen, der aus einem einzelnen Wert besteht. Hier ist ein Beispiel für die Erstellung eines Skalartyps:

CREATE TYPE dbo.ColorType FROM VARCHAR(20) NULL;

In diesem Beispiel haben wir einen Skalartyp mit dem Namen ColorType erstellt, der auf dem Datentyp VARCHAR(20) basiert. Der NULL-Schlüsselbegriff gibt an, dass Werte dieses Typs optional sein können.

Ändern eines benutzerdefinierten Typs

Wenn Sie einen benutzerdefinierten Typ ändern möchten, müssen Sie ihn zuerst löschen und dann erneut erstellen. Beachten Sie jedoch, dass das Löschen eines Typs auch alle Abhängigkeiten, wie z. B. Tabellen oder Prozeduren, die diesen Typ verwenden, entfernt. Stellen Sie daher sicher, dass Sie vor dem Löschen alle Abhängigkeiten berücksichtigt haben.

Um einen benutzerdefinierten Typ zu ändern, gehen Sie folgendermaßen vor:

  • Löschen Sie den vorhandenen Typ mit dem DROP TYPE-Statement:
DROP TYPE dbo.EmployeeTableType;
  • Erstellen Sie den Typ erneut mit den gewünschten Änderungen.

Beispiel: Verwendung eines benutzerdefinierten Typs

Nun, da Sie wissen, wie Sie benutzerdefinierte Typen erstellen und ändern können, hier ein Beispiel, wie Sie sie in einer gespeicherten Prozedur verwenden können:

CREATE PROCEDURE dbo.InsertEmployees

@param Employees dbo.EmployeeTableType READONLY
AS
BEGIN
INSERT INTO EmployeesTable (EmployeeID, FirstName, LastName)
SELECT EmployeeID, FirstName, LastName
FROM Employees;
END;

In diesem Beispiel haben wir eine gespeicherte Prozedur InsertEmployees erstellt, die einen Parameter Employees vom Typ dbo.EmployeeTableType akzeptiert. Diese Prozedur fügt die Datensätze aus der Tabelle Employees in die Tabelle EmployeesTable ein. Um die gespeicherte Prozedur aufzurufen und den benutzerdefinierten Tabellentyp zu verwenden, können Sie folgenden Code verwenden:

DECLARE @empTable dbo.EmployeeTableType;

INSERT INTO @empTable (EmployeeID, FirstName, LastName)
VALUES (1, 'John', 'Doe'),
       (2, 'Jane', 'Smith');

EXEC dbo.InsertEmployees @Employees = @empTable;

In diesem Beispiel erstellen wir eine Variable @empTable vom Typ dbo.EmployeeTableType und fügen dann einige Datensätze in diese Variable ein. Schließlich rufen wir die gespeicherte Prozedur InsertEmployees auf und übergeben die Variable @empTable als Parameter.

Das war eine einfache Einführung in die Erstellung und Änderung benutzerdefinierter Typen in T-SQL. Benutzerdefinierte Typen bieten Ihnen die Möglichkeit, Ihre Datenbankstruktur zu erweitern und komplexe Datentypen zu definieren. Sie können diese Typen in verschiedenen Datenbankobjekten wie Tabellen, gespeicherten Prozeduren und Funktionen verwenden, um Ihre Daten effektiv zu organisieren und zu verarbeiten.

Verwendung eines benutzerdefinierten Skalartyps

Neben benutzerdefinierten Tabellentypen können Sie auch benutzerdefinierte Skalartypen erstellen und verwenden. Hier ist ein Beispiel, wie Sie einen benutzerdefinierten Skalartyp erstellen und verwenden können:

CREATE TYPE dbo.ColorType FROM VARCHAR(20) NULL;

In diesem Beispiel haben wir einen benutzerdefinierten Skalartyp mit dem Namen ColorType erstellt, der auf dem Datentyp VARCHAR(20) basiert. Der NULL-Schlüsselbegriff gibt an, dass Werte dieses Typs optional sein können.

Nun können wir diesen benutzerdefinierten Skalartyp in einer Tabelle verwenden:

CREATE TABLE Products
(
    ProductID INT,
    ProductName VARCHAR(100),
    ProductColor dbo.ColorType
);

In der Tabelle Products haben wir eine Spalte ProductColor definiert, die den benutzerdefinierten Skalartyp dbo.ColorType verwendet. Dadurch können wir den Farbwert für jedes Produkt speichern und dabei den benutzerdefinierten Typ verwenden.

Um Werte für den benutzerdefinierten Skalartyp einzufügen oder abzufragen, können Sie die entsprechenden T-SQL-Statements verwenden:

-- Einfügen eines Werts
INSERT INTO Products (ProductID, ProductName, ProductColor)
VALUES (1, 'Widget', 'Red');

-- Abfragen eines Werts
SELECT ProductID, ProductName, ProductColor
FROM Products;

In diesem Beispiel fügen wir einen Wert mit dem Farbwert ‘Red’ in die Spalte ProductColor ein und fragen dann die Daten aus der Tabelle Products ab.

Benutzerdefinierte Skalartypen ermöglichen es Ihnen, spezifische Datentypen zu definieren, die Ihren Anforderungen entsprechen. Sie können verwendet werden, um spezielle Bedingungen oder Einschränkungen auf Daten anzuwenden und die Datenintegrität zu gewährleisten.

Fazit

Die Verwendung von benutzerdefinierten Typen in T-SQL ermöglicht es Ihnen, Ihre Datenbankstruktur zu erweitern und komplexe Datentypen zu definieren. Sie können benutzerdefinierte Tabellentypen verwenden, um strukturierte Daten zu speichern, und benutzerdefinierte Skalartypen, um spezielle Datentypen zu definieren. Durch die Verwendung dieser Typen in Tabellen, gespeicherten Prozeduren und Funktionen können Sie Ihre Daten effizienter organisieren und verarbeiten.

Von Michael