Как написать параметризованный запрос в студии управления? - PullRequest
17 голосов
/ 10 декабря 2010

Из клиентского приложения я обычно делаю:

select * from table where Name = :Parameter

и затем перед выполнением запроса я делаю

:Parameter = 'John'

Эти параметры не являются поиском и заменой, а реальными параметрами, передаваемыми на сервер,Поскольку мне нужно подробно протестировать некоторые из этих запросов, как я могу написать запрос в Management Studio?

Я хочу написать запрос с параметрами и присвоить значение этому параметру.Как это можно сделать?

Обновление:

Чтобы убрать путаницу, я добавляю информацию, чтобы лучше выразить myseld.

, когда я выполняю обычный запросЯ вижу в SQL Server Profiler

select * from table where Name = 'John'

, а когда я выполняю параметризованный запрос, я вижу это:

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

Вот почему я говорю, что это не поиск и замена.

Ответы [ 3 ]

28 голосов
/ 10 декабря 2010

Как насчет чего-то вроде

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

SELECT *
FROM Table
WHERE Name = @Parameter
0 голосов
/ 18 сентября 2018

Похоже, вы ответили на свой вопрос, когда обновили его.

Переписываю здесь для будущих посетителей, которые могут быть смущены, как я. Ниже описано, как вы пишете параметризованный запрос в SSMS. Это помогает, если вы хотите проанализировать план выполнения для параметризованного запроса, выполняемого вашим кодом.

EXEC sp_executesql N'

SELECT * FROM table_t 
WHERE first_name = @parameter

', N'@parameter VARCHAR(8000)', 'John'
0 голосов
/ 27 ноября 2017

В дополнение к ответу Адриана Стандера в вашем коде, например, если вы используете C #, убедитесь, что вы передали @parameter через инкапсулирующий
пример кода ниже для изучения:

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

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


                conn.Close();

            }

Конечновыше не полный код, но вы дадите представление.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...