webentwicklung-frage-antwort-db.com.de

erstellen Sie eine SQL Server-Tabelle basierend auf einem benutzerdefinierten Typ

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?

11
gt6989b
--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
21
Dave Mason

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
3
M.Ali

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

0
user2063329

IN SQL Server verwenden Sie die folgende Syntax, um die Tabelle zu kopieren

SELECT * INTO newtablename FROM oldtablename;
0
VJ Hil