- PR -

動的SQL文

1
投稿者投稿内容
なび
ぬし
会議室デビュー日: 2007/08/27
投稿数: 273
投稿日時: 2008-06-03 17:03
 こんにちは。

動的SQL文の書き方を教えて下さい。

SQLServer2005で
パラメータで受け取った部課の変数を元に
動的SQL文を作成したいのですが
varchar の値 '@BCD' をデータ型 int に変換できませんでした。
のエラーになってしまいます。

1 @JKN varchar(100)の宣言

2 パラメータ@BCDを元に条件作成 SET @JKN = 'AND cyu.BCD = ''@BCD'''

3 動的SQL EXEC(' SELECT * FROM A WHERE ' + @JKN + ' )

という具合ですが2でエラーになります。

わかる方よろしくお願いします。
ふりっつ
会議室デビュー日: 2007/11/18
投稿数: 15
投稿日時: 2008-06-04 00:02
@BCDの型が提示されていないので、推測になってしまいますが…
@BCDがint型で定義されているのであれば、それが原因です。
文字列と数値を結合する場合、数値を文字列に変換する必要があります。
型変換には、CASTやCONVERT関数を使います。
2の部分を以下に置き換えてみて下さい。
SET @JKN = 'AND cyu.BCD = ' + CAST(@BCD AS varchar)
SET @JKN = 'AND cyu.BCD = ' + CONVERT(varchar, @BCD)

文字列と数字の結合だけを確認するなら、以下のコードで確認できますよ。
DECLARE @BCD
DECLARE @JKN
@BCD = 10
SET @JKN = 'A = ' + CAST(@BCD AS varchar)
PRINT @JKN
なび
ぬし
会議室デビュー日: 2007/08/27
投稿数: 273
投稿日時: 2008-06-04 11:19
ふりっつさん、ありがとうございます。

助かりました。
1

スキルアップ/キャリアアップ(JOB@IT)