如何在管理工作室中编写参数化查询?

时间:2010-12-10 08:50:22

标签: sql-server parameters ssms

从客户端应用程序中我做了:

select * from table where Name = :Parameter

然后在执行查询之前我做

:Parameter = 'John'

这些参数不是Search& Replace,而是传递给服务器的真实参数。由于我需要详细测试其中的一些查询,如何在管理工作室中编写查询?

我想用参数编写查询并为参数赋值。怎么办呢?

更新

为了消除这里的混乱,我添加信息以更好地表达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 个答案:

答案 0 :(得分:28)

这样的东西
DECLARE @Parameter VARCHAR(20)
SET @Parameter = 'John'

SELECT *
FROM Table
WHERE Name = @Parameter

答案 1 :(得分:0)

在您的代码中添加Adriaan Stander回复,例如,如果您使用C#,请确保通过封装传递@parameter 下面的代码示例供您学习:

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

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


                conn.Close();

            }

当然以上不是完整的代码,但你会给出一个想法。

答案 2 :(得分:0)

好像您在更新问题时回答了自己的问题。

在这里为将来可能像我一样感到困惑的访客重写。下面是如何在SSMS中编写参数化查询。如果要分析由代码运行的参数化查询的执行计划,这将很有帮助。

EXEC sp_executesql N'

SELECT * FROM table_t 
WHERE first_name = @parameter

', N'@parameter VARCHAR(8000)', 'John'