2010-12-10 19 views
13

desde una aplicación cliente tyipically yo:¿Cómo escribir una consulta parametrizada en el estudio de gestión?

select * from table where Name = :Parameter 

y luego antes de ejecutar la consulta que hacen

:Parameter = 'John' 

Estos parámetros no son una búsqueda & sustituye sino parámetros reales pasan al servidor. Ya que necesito probar algunas de esas consultas en detalle, ¿cómo puedo escribir la consulta en el estudio de administración?

Deseo escribir la consulta con parámetros y dar un valor al parámetro. ¿Cómo puede hacerse esto?

Actualización:

Para eliminar la confusión aquí añado información a myseld mejor expresa.

cuando ejecuto una consulta normal que veo en perfilador servidor SQL

select * from table where Name = 'John' 

mientras que cuando ejecuta una consulta parametrizada que veo esto:

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

Esto es por lo que digo que no es una buscar y reemplazar

+0

La actualización hace más o menos lo que te mostré en mi respuesta ... –

+0

Ok, tienes razón. Entonces, lo que obtuve es que cuando una aplicación cliente usa parámetros de alguna manera, desclasifica las variables con DELCARE. Muy interesante, esto ayuda a resolver un problema que tengo. – LaBracca

+0

Para explicarte por qué hice esta pregunta, te redirigiré a mi última pregunta: http://stackoverflow.com/questions/4408551/select-statment-performance-degradation-when-using-distinct-with-parameters – LaBracca

Respuesta

21

¿Qué tal algo así como

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

SELECT * 
FROM Table 
WHERE Name = @Parameter 
+0

No, esto es "Serach and replace", de esta forma no le digo a sql_server que es un parámetro. – LaBracca

+0

Por favor, mira mi Actualización a la pregunta para que entiendas lo que quiero decir. – LaBracca

0

Con Además de Adriaan Stander respuesta en su decir, código, por ejemplo, si estuviera usando C# garantizar que se pasa el @parameter a través de la encapsulación de
ejemplo de código siguiente para su estudio:

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

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


       conn.Close(); 

      } 

Por supuesto, lo anterior no es un código completo, pero ¿me puede dar una idea?

Cuestiones relacionadas