none
ストアドプロシージャ内の変数の大文字小文字区別について RRS feed

  • 質問

  • こんにちは

     

    照合順序を[Japanese_CI_AS]としたデータベースに、ストアドプロシジャを登録したところ、

    変数名のパンチミスで、@money1とすべきところを@Money1としてしまいました。

    変数名が異なることから、

    [メッセージ 137、レベル 15、状態 1、サーバー DBSV01、プロシージャ test001、行 40 スカラ変数 "@Money1" を宣言してください。]

    が表示されました。@money1に修正することで正常に登録できたのですが、ストアドプロシジャの変数名は照合順序設定の影響を受けないものなのでしょうか?

     

    よろしくお願いします。

     

    2007年12月28日 8:56

回答

  • 米田さん。

    ありがとうございました。

    使用しているバージョンはSQLServer2005でした。

    [インスタンスの既定の照合順序]でしたか。。。理由がわかってすっきりしました。

    ありがとうございました。

     

    2007年12月29日 1:41

すべての返信

  •  米田です。

     

     バージョン等明記した方がいいですよ。

    >ストアドプロシジャの変数名は照合順序設定の影響を受けないものなのでしょうか?
    内部で USE 等使用可能なので、変数は個々のデータベース設定とは独立します。

     

     詳しくはBooksOnline に解説があります。SQL Server 2005だと

    データベースとデータベース エンジン アプリケーションの国際化に関する注意点 > 照合順序の使用 > 照合順序の設定と変更 > 
    の 識別子の照合順序より
    >接続コンテキストが 1 つのデータベースに関連付けられたときに変数、GOTO ラベル、一時ストアド プロシージャ、および一時テーブルを作成し、接続コンテキストを別のデータベースに切り替えたときに、それらを参照することができます。したがって、変数、GOTO ラベル、一時ストアド プロシージャ、および一時テーブルの識別子は、インスタンスの既定の照合順序になります。

    2007年12月28日 11:22
  • 米田さん。

    ありがとうございました。

    使用しているバージョンはSQLServer2005でした。

    [インスタンスの既定の照合順序]でしたか。。。理由がわかってすっきりしました。

    ありがとうございました。

     

    2007年12月29日 1:41