SELECT(INTO 付き)
SELECT(INTO 付き)ステートメントを使用すると、指定したテーブルから列の値を選択して、変数に挿入したり、テーブルにデータを入れることができます。
構文
SELECT
[
ALL
|
DISTINCT
] [
top句
]
選択リスト
INTO
変数
|
テーブル名
|
テンポラリ テーブル名
[,
変数
]...
FROM
テーブル参照
[,
テーブル参照
]...[
WHERE
検索条件
]
[
GROUP BY
式
[,
式
]...[
HAVING
検索条件
]] [
UNION
[
ALL
]
クエリ スペック
] [
ORDER BY
order-by式
[,
order-by式
]...]
クエリ スペック
::= (
クエリ スペック
)
FROM
テーブル参照
[,
テーブル参照
]...
[
WHERE
検索条件
]
変数
::=
ユーザー定義名
テーブル名
::=
テーブルのユーザー定義名
テンポラリ テーブル名
::=
テンポラリ テーブルのユーザー定義名
残りの構文定義については、
SELECT
を参照してください。
備考
変数は、ストアド プロシージャ、トリガー、およびユーザー定義関数内で生じる必要があります。
SELECT INTO を使用してテーブルにデータを入れられるのは、SELECT INTO ステートメントがユーザー定義関数またはトリガーの外部で使用される場合のみです。ユーザー定義関数またはトリガーの内部で、SELECT INTO を使用してテーブルを作成したりデータを入れることは許可されていません。
SELECT INTO をストアド プロシージャ内で使用することは許可されています。
SELECT INTO ステートメントによって作成し、データを入れることができるテーブルは 1 つだけです。単独の SELECT INTO ステートメントで複数のテーブルの作成とデータ投入を行うことはできません。
SELECT INTO で作成された新規テーブルは、ソース テーブルからの CASE および NOT NULL 制約によってのみ保守することができます。DEFAULT および COLLATE などのこれ以外の制約では保守できません。さらに、新しいテーブルにはインデックスは作成されません。
例
SELECT INTO を使用してテンポラリ テーブルにデータを入れる方法については、
CREATE (テンポラリ) TABLE
の例を参照してください。
次の例では、Person テーブルの、名前が Bill であるデータの first_name と last_name の値を変数 :x、:y に割り当てます。
SELECT first_name, last_name INTO :x, :y
from
person
where
first_name = 'Bill'
関連項目