- Home
- SQL Server
- [SQL Server]変数を宣言する(スカラー値変数とテーブル型変数)
[SQL Server]変数を宣言する(スカラー値変数とテーブル型変数)
- 2017/1/20
- SQL Server
- DECLARE, スカラー値変数, スカラー値変数は宣言されて居ません, テーブル型変数, 変数名には「@」が必要
- コメントを書く
パラメータ変数(スカラー値変数とテーブル型変数)を宣言する方法。
スカラー値変数
スカラー値変数とは?
スカラー(単体)の値を保持する変数で、int型、varchar型などのデータ型の変数
スカラー値変数の宣言
1 2 3 4 5 6 7 8 9 |
-- DECLARE @変数名 データ型 [=初期値] -- 初期値は省略可能 DECLARE @PlantCode nvarchar(4) = 'Fukuoka' -- 複数のスカラー値変数の宣言はカンマで区切る DECLARE @PlantCode nvarchar(4) = 'Fukuoka' ,@DateFrom nvarchar(23) = '2011-08-01 00:00:00' ,@DateTo nvarchar(23) = '2011-08-01 00:00:00' |
テーブル変数
テーブル型変数とは?
データベースのテーブルと同じように使用できる変数で、「CREATE TABLE」ではなく「DECLARE」で宣言する。
データの操作は、通常のテーブルと同じ様にSELECT・UPDATE・INSERTを使用する。
通常のテーブルと同じように結合もできる。
テーブル型変数の宣言
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
-- CREATE TABLEがDECLAREに変わっただけ、変数なので先頭に「@」を付ける DECLARE @Tb1 table ( id int not null ,name varchar(20) ) DECLARE @Tb2 table ( ItemCode varchar(8) not null ,ItemName varchar(50) ) /* 複数のテーブル型変数を宣言するときは、 スカラー値変数のようにカンマは使えない。 一つ一つDECLAREを書かないといけない。 */ SELECT S.SEISAN_DATE ,S.ITEM_CODE ,I.ItemName ,S.SEISAN_SU FROM SEISAN_TABLE S LEFT OUTER JOIN @Tb2 I ON S.ITEM_CODE = I.ItemCode |
注意点・困ったときは
「@」は必要
変数を宣言する場合、変数名の先頭に「@」を付けないと、
宣言部分の記述で下記のエラーが発生する。
メッセージ 155、レベル 15、状態 2、行 2
‘varchar’ は CURSOR オプションとして認識されません。
また、変数を使用するところでは。
メッセージ 207、レベル 16、状態 1、行 9
列名 ‘PlantCode’ が無効です。
というエラーが発生する。
テーブル値変数を使おうとしたらエラーになる場合
テーブル値変数を使用したら「このスカラー値変数は宣言されていません」的なエラーが出る場合がある。
この場合変数を [] で囲む。
例:[@Tb2].ItemName
コメント
この記事へのトラックバックはありません。
この記事へのコメントはありません。