重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

お知恵をお持ちの方、本当に助けてください。

実は今仕事で「SQLServer2005 EnterpriseEdition」を
使用しています。
その中で、
「ALTER DATABASE dbname ADD FILEGROUP FG_DATE01」
というようなトランザクションがあります。この「FG_DATE01」を
つきが変わるごとに「FG_DATE02」のようにどんどん追加していく
用にSPを作成したいのですが問題が発生してしまいました。

「ALTER DATABASE dbname ADD FILEGROUP @sFG_NAME」
のように変数を設定すると・・・
「メッセージ 102、レベル 15、状態 1、行 2
'@sFG_NAME' 付近に不適切な構文があります。」
とエラー文が吐き出されてしまいます。
もしかして、トランザクションALTERには変数の
設定ができないのでしょうか?

そこがネックで大変困っています。
どなたか、お知恵をお貸しください。

実行環境
OS:WindowsXP
DB:SQLServer2005 EnterpriseEdition
CPU:Pen4 2.4GHz
Mem:1GB
HDD:120GB

以上です。本当に宜しくお願いします。

A 回答 (1件)

SQL中に変数を指定できるのは、検索条件式中の値部分など、限られた場所だけです。

これらの部分以外を可変にしたい場合は、実行時にSQL文を文字列で組み立て、EXECUTE文で実行する「SQLの動的実行」という方法を採る場合が多いです。

オンラインマニュアル(http://msdn2.microsoft.com/ja-jp/library/ms18833 …)に掲載されている例

EXEC ('ALTER INDEX ALL ON ' + @schemaname + '.' + @tablename + ' REBUILD;');

その他、参考
http://homepage1.nifty.com/kojama/works/rdbms/ms …
    • good
    • 0
この回答へのお礼

本当にありがとうございます。
バチコイできました。

うかつでした。EXECUTE(EXEC)は頻繁に使用しているのですが
頭の中がSPの実行時のみにしか使用しない!!なんて
考えていました。

本当に助かりました。本当にありがとうございます。

お礼日時:2007/09/22 16:03

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!