Ich habe meinen definierten Tabellentyp mit erstellt
CREATE TYPE dbo.MyTableType AS TABLE
(
Name varchar(10) NOT NULL,
ValueDate date NOT NULL,
TenorSize smallint NOT NULL,
TenorUnit char(1) NOT NULL,
Rate float NOT NULL
PRIMARY KEY (Name, ValueDate, TenorSize, TenorUnit)
);
und ich möchte eine Tabelle dieses Typs erstellen. Von diese Antwort der Vorschlag war zu versuchen
CREATE TABLE dbo.MyNewTable AS dbo.MyTableType
die folgende Fehlermeldung in meinem SQL Server Express 2012 ausgegeben hat:
Falsche Syntax in der Nähe des Schlüsselworts 'OF'.
Wird dies nicht von SQL Server Express unterstützt? Wenn ja, könnte ich es anders erstellen, zum Beispiel mit DECLARE
?
--Create table variable from type.
DECLARE @Table AS dbo.MyTableType
--Create new permanent/physical table by selecting into from the temp table.
SELECT *
INTO dbo.NewTable
FROM @Table
WHERE 1 = 2
--Verify table exists and review structure.
SELECT *
FROM dbo.NewTable
Es ist wie ein anderer Datentyp in Ihrem SQL Server. Erstellen einer Tabelle mit einem benutzerdefinierten Typ gibt es in SQL Server nicht. Sie können eine Variable dieses Typs deklarieren und mit Daten füllen, aber Sie können keine Tabelle dieses Typs erstellen.
Etwas wie das...
/* Declare a variable of this type */
DECLARE @My_Table_Var AS dbo.MyTableType;
/* Populate the table with data */
INSERT INTO @My_Table_Var
SELECT Col1, Col2, Col3 ,.....
FROM Source_Table
Der Tabellentyp ist eine Vorlage. Sie müssen dieses Objekt verwenden, um eine Tabelle zu erstellen. Das Readonly ist die einzige Option, die Sie haben.
Erstellen Sie proc NewT @ X MyTableType nur Als . Wählen Sie * aus @x aus
Jetzt können Sie die Spalten in der instantiierten Tabelle auflisten, in der die gespeicherte Prozedur aufgerufen wird. Exec NewT
IN SQL Server verwenden Sie die folgende Syntax, um die Tabelle zu kopieren
SELECT * INTO newtablename FROM oldtablename;