none
ストアドプロシージャ内で CREATE DATABASE のデータベース名を変数で記述するには? RRS feed

  • 質問

  • もしかしたら基本的なことかも知れませんが...。

    ストアドプロシージャ内に CREATE DATABASE 文を記述して、条件に合わせて作成するデータベースの名前を変更しようと考えています。

    しかし、以下のように単純にデータベース名を変数にするとエラーが発生してコンパイルも通りません。

    CREATE DATABASE @dbName

    なにか記述の方法があるのでしょうか?

    何卒よろしくおねがいします。

    2010年1月31日 13:38

回答

  • ストアドプロシージャ内でSQL文を動的に組み立てて実行します。動的に組み立てるのでサニタイズし、SQLインジェクションの原因にならないようにして下さい。

    (参考)
    SQL Server:テーブル名の変数化サンプル
    http://billyboy.blog81.fc2.com/blog-entry-160.html

    sp_executesql を使用しても良いです。


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://blogs.wankuma.com/trapemiya/
    • 回答としてマーク あいおか 2010年2月1日 17:20
    2010年1月31日 14:37

すべての返信

  • ストアドプロシージャ内でSQL文を動的に組み立てて実行します。動的に組み立てるのでサニタイズし、SQLインジェクションの原因にならないようにして下さい。

    (参考)
    SQL Server:テーブル名の変数化サンプル
    http://billyboy.blog81.fc2.com/blog-entry-160.html

    sp_executesql を使用しても良いです。


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://blogs.wankuma.com/trapemiya/
    • 回答としてマーク あいおか 2010年2月1日 17:20
    2010年1月31日 14:37
  • なるほど EXEC 文を使用するのですね。

    目からウロコです!!

    ほんとうに助かりました。

    ありがとうございました。
    2010年2月1日 17:21