2010-12-29 32 views
2

変数DECLARE @intCount intを宣言し、ストアドプロシージャ全体で@intcountとして使用するストアドプロシージャがあります。SQL Server 2005での大文字と小文字の区別

私は3つのデータベースにこのストアドプロシージャを実行し、それらはすべてが正常に実行されますが、私は第四データベース上でそれを実行したときには、メッセージ

は変数@intcountを宣言する必要があります表示。

ここで、ストアドプロシージャのすべての部分で@intCountに名前を変更すると、それも4番目のデータベースで実行されました。

これは、SQL Serverで大文字と小文字が区別されることを意味しますか?私はそれが他ではないことを知っていたし、私は他の3つのデータベースでも見ることができる。

SQL Serverのこの大文字と小文字の区別を無効にする方法はありますか?

+0

これを '@ intCount'と定義すると、常に' @ intCount'として使用するので、これらの種類について心配する必要はありません。 –

答えて

2

デフォルトの照合順序を大文字小文字を区別しないものに変更するか、大文字と小文字を区別してSQLを記述します。

http://msdn.microsoft.com/en-us/library/ms184391.aspx

識別子の照合は、それが定義されるレベルに依存します。ログインレベルやデータベース名などのインスタンスレベルのオブジェクトの識別子には、インスタンスのデフォルト照合が割り当てられます。データベース内のオブジェクトの識別子(表、ビュー、列名など)には、データベースのデフォルト照合が割り当てられます。たとえば、大文字と小文字を区別する照合を使用して、データベース内に大文字と小文字の異なる2つのテーブルを作成することはできますが、大文字と小文字を区別しない照合を使用してデータベースに作成することはできません。詳細については、「識別子」を参照してください。

接続コンテキストが1つのデータベースに関連付けられ、コンテキストが別のデータベースに切り替えられたときに参照されると、変数、GOTOラベル、一時ストアドプロシージャ、および一時テーブルを作成できます。 変数、GOTOラベル、一時ストアドプロシージャ、一時テーブルの識別子は、サーバーインスタンスのデフォルトの照合順序にあります。

+0

正確にするには*データベースのデフォルト照合**を大文字小文字を区別しないように変更する* –

+0

しかし、大文字と小文字を区別した既定値をとった既存のオブジェクトすべてを変更する必要はありませんか? – xr280xr

+1

@ xr280xrこの問題(「なぜ変数は大文字と小文字が区別されますか?」)の文脈では、私は信じていません。しかし、なぜ "私のコラムは大文字と小文字が区別される"という文脈で関連していると私は信じています。 –

関連する問題