web-dev-qa-db-ja.com

Management Studioでパラメーター化されたクエリを作成する方法

クライアントアプリケーションから私は典型的には次のようにします:

select * from table where Name = :Parameter

そしてクエリを実行する前に

:Parameter = 'John'

これらのパラメーターはSearch&Replaceではなく、サーバーに渡される実際のパラメーターです。これらのクエリの一部を詳細にテストする必要があるので、Management Studioでクエリを作成するにはどうすればよいですか?

パラメータを使用してクエリを記述し、パラメータに値を指定します。これはどのように行うことができますか?

更新:

ここで混乱を取り除くために、自分を表現するための情報を追加します。

sQL Serverプロファイラーに表示される通常のクエリを実行すると

select * from table where Name = 'John'

一方、パラメーター化されたクエリを実行すると、次のようになります。

exec sp_executesql N'select * from table 
where Name = @P1',N'@P1 varchar(8000)','John'

これが、検索と置換ではないと言う理由です。

18
LaBracca

のようなものはどうですか

DECLARE @Parameter VARCHAR(20)
SET @Parameter = 'John'

SELECT *
FROM Table
WHERE Name = @Parameter
28
Adriaan Stander

質問を更新したときに、自分の質問に回答したようです。

私のように混乱するかもしれない将来の訪問者のためにここを書き直します。以下は、SSMSでパラメーター化されたクエリを作成する方法です。これは、コードによって実行されるパラメーター化されたクエリの実行プランを分析する場合に役立ちます。

EXEC sp_executesql N'

SELECT * FROM table_t 
WHERE first_name = @parameter

', N'@parameter VARCHAR(8000)', 'John'
1
Dennis T

Adriaan Standerの回答に加えて、たとえばコードでC#を使用している場合は、@parameterviaのカプセル化を確実にパスする必要があります。次にコード例を示します。

using (SqlConnection conn = new SqlConnection(conString))
{
    conn.Open();

    SqlCommand cmd = new SqlCommand(userSql, conn);
    cmd.Parameters.AddWithValue("@parameter", parameter);


    conn.Close();

}

このコードはあなたにアイデアを与えることを意図しているので、完全ではありません。

0
Wazzie