web-dev-qa-db-ja.com

ユーザー定義型に基づいてSQL Serverテーブルを作成する

で作成した定義済みのテーブルタイプがあります

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)
);

このタイプのテーブルを作成したいと思います。 この答え から提案は試してみることでした

CREATE TABLE dbo.MyNewTable AS dbo.MyTableType

sQL Server Express 2012で次のエラーメッセージが生成されました。

キーワード「OF」付近の構文が正しくありません。

これはSQL Server Expressでサポートされていませんか?もしそうなら、たとえばDECLAREを使用するなど、他の方法で作成できますか?

16
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
23
Dave Mason

これは、SQLサーバーの他の日付タイプと同じです。ユーザー定義型のテーブルを作成すると、SQLサーバーにはそのようなものはありません。あなたができることは、このタイプの変数を宣言してそれを投入することですが、このタイプのテーブルを作成することはできません。

このようなもの...

/* 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

テーブルタイプはテンプレートです。テーブルを作成するには、このオブジェクトを使用する必要があります。 readonlyは、使用できる唯一のオプションです。

Proc NewT @x MyTableType readonlyをSelect * from @xとして作成

これで、ストアドプロシージャを呼び出すインスタンス化されたテーブルの列を一覧表示できます。実行NewT

0
user2063329

IN SQLサーバーは、次の構文を使用してテーブルをコピーします

SELECT * INTO newtablename FROM oldtablename;
0
VJ Hil