で作成した定義済みのテーブルタイプがあります
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
を使用するなど、他の方法で作成できますか?
--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
これは、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
テーブルタイプはテンプレートです。テーブルを作成するには、このオブジェクトを使用する必要があります。 readonlyは、使用できる唯一のオプションです。
Proc NewT @x MyTableType readonlyをSelect * from @xとして作成
これで、ストアドプロシージャを呼び出すインスタンス化されたテーブルの列を一覧表示できます。実行NewT
IN SQLサーバーは、次の構文を使用してテーブルをコピーします
SELECT * INTO newtablename FROM oldtablename;