- Home
- SQL Server
- [SQL Server]メッセージ 214、レベル 16、状態 2、プロシージャ sp_executesql、行 1 プロシージャにはデータ型 ‘ntext/nchar/nvarchar’ のパラメーター ‘@statement’ が必要です。
[SQL Server]メッセージ 214、レベル 16、状態 2、プロシージャ sp_executesql、行 1 プロシージャにはデータ型 ‘ntext/nchar/nvarchar’ のパラメーター ‘@statement’ が必要です。
- 2017/7/24
- SQL Server
- EXEC, sp_executesql
- コメントを書く
変数の型と、代入する文字列の型が一致していない。
エラーが出るクエリ
1 2 3 4 5 6 7 8 |
DECLARE @SQL varchar(max) SET @SQL =N' BEGIN SELECT * FROM TABLE名 END '; EXEC sp_executesql @SQL |
このクエリには2箇所問題がある。TABLE名は任意のテーブル名として、
1行目の@SQLのデータ型はvarchar型なのに、3行目でSETで代入しているクエリ文字列は「N’」という風に「N」がついている。
このため、代入しようとしている文字列は「nvarchar型」となり、
「varchar型」と「nvarchar型」でデータ型が異なる。
解決法
データ型を「nvarchar」に合わせる。
1行目の「varchar」を「nvarchar」にして、データ型を合わせると、このエラーは出なくなる。
注意したいのは、変数の型と代入する文字列を「varchar」で合わせると、またこのエラーが出る。
SQLはnvarchar型で格納しなければならないようだ。
コメント
この記事へのトラックバックはありません。
この記事へのコメントはありません。