一度指定された変数を後でスクリプトで使用するにはどうすればよいですか?これらの変数は、クエリ内で複数回、スクリプト内で複数のクエリで使用できます。以下の例では、このような変数として@x
を使用しています。上記のエラーを返しますSQLクエリに変数を追加する
Declare @Query nvarchar(1000)
Declare @x nvarchar(40)
Set @x = 'test'
Set @Query = 'Select [Name]
, ' + @x + ' as [TestCase]
From mytable'
Exec (@Query)
-- returns "Invalid column name 'test'"
:私は何をしたいか
のようなものです。私も次は、最初のように動作し、同じエラーを返していないことに注意
Declare @Query nvarchar(1000)
Declare @x nvarchar(40)
Set @x = 'test'
Set @Query = 'Select [Name]
, ''test'' as [TestCase]
From mytable'
Exec (@Query)
-- Returns e.g.
-- Name TestCase
-- Alice Test
-- Bob Test
:私はそれが相当を達成したいと思います
エラーに基づいてDeclare @Query nvarchar(1000)
Declare @x nvarchar(40)
Set @x = 'test'
Set @Query = 'Select [Name]
, ' + 'test' + ' as [TestCase]
From mytable'
Exec (@Query)
-- returns "Invalid column name 'test'"
とI以来、列名として@x
を使用しようとしていませんが、変数として、変数の無効な実装を使用していると仮定します。
ああ優秀、ありがとう!これは必要に応じて機能しました。 – conor
私の質問に最も徹底的に回答し、簡素化するので、この答えを受け入れる - 私は実際にはこの場合動的SQLを必要としない。 – conor
私はそれが助けてうれしいです。あなたの質問の後半に答えるには、自分で 'select @ query'を試して、どのクエリが構成されているのかを調べることができます。 '' [名前]を選択してください... 'と表示されます。これは "test"を列名として扱います。他の答えが示すように、引用符で囲む必要があります。しかし、次に、「@ x'が引用符で囲まれているとどうなるか」の問題を紹介し、動的SQLの危険性を実証します。例えば、 'set @x = 'test' '、名前、名前、名前、' 'hahaha''を他の回答のクエリで試してみてください! –