SELECT(INTO 付き)
SELECT(INTO 付き)ステートメントを使用すると、指定したテーブルから列の値を選択して、変数に挿入したり、テーブルにデータを入れることができます。
構文
| テーブル名 | テンポラリ テーブル名[, 変数]...
FROM テーブル参照[, テーブル参照]...[WHERE 検索条件]
[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'
関連項目