Ответ 1
Как насчет чего-то вроде
DECLARE @Parameter VARCHAR(20)
SET @Parameter = 'John'
SELECT *
FROM Table
WHERE Name = @Parameter
В клиентском приложении я делаю следующее:
select * from table where Name = :Parameter
а затем перед выполнением запроса я делаю
:Parameter = 'John'
Эти параметры не являются параметрами Search & Replace, а реальными передаются на сервер. Поскольку мне нужно подробно проверить некоторые из этих запросов, как я могу написать запрос в студии управления?
Я хочу написать запрос с параметрами и дать значение этому параметру. Как это можно сделать?
Update:
Чтобы удалить путаницу, я добавляю информацию для лучшего выражения myseld.
когда я выполняю обычный запрос, который я вижу в профилировщике sql-сервера
select * from table where Name = 'John'
когда я выполняю параметризованный запрос, я вижу следующее:
exec sp_executesql N'select * from table
where Name = @P1',N'@P1 varchar(8000)','John'
Вот почему я говорю, что это не поиск и замена.
Как насчет чего-то вроде
DECLARE @Parameter VARCHAR(20)
SET @Parameter = 'John'
SELECT *
FROM Table
WHERE Name = @Parameter
Похоже, вы ответили на свой вопрос, когда обновили его.
Переписываю здесь для будущих посетителей, которые могут быть смущены, как я. Ниже описано, как вы пишете параметризованный запрос в SSMS. Это помогает, если вы хотите проанализировать план выполнения для параметризованного запроса, выполняемого вашим кодом.
EXEC sp_executesql
N'
SELECT * FROM table_t
WHERE first_name = @parameter
',
N'@parameter VARCHAR(8000)',
N'John'
В дополнение к ответу Адриана Стандера, если вы, например, использовали С# в своем коде, вы должны были @parameter
что вы передали @parameter
через инкапсуляцию. Вот пример кода:
using (SqlConnection conn = new SqlConnection(conString))
{
conn.Open();
SqlCommand cmd = new SqlCommand(userSql, conn);
cmd.Parameters.AddWithValue("@parameter", parameter);
conn.Close();
}
Этот код предназначен для того, чтобы дать вам представление и поэтому не является полным.