SQL - Problema con Procedimiento de Almacenado

   
Vista:

Problema con Procedimiento de Almacenado

Publicado por Hector (2 intervenciones) el 21/05/2012 16:46:27
Hola tengo un problemita al ejecutar un procedimiento de almacenado.

Este es el procedimiento.

USE [Activos_Compass]
GO
/****** Object: StoredProcedure [dbo].[buscar.usuarios] Script Date: 21-05-2012 10:38:09 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[buscar.usuarios]
@tipoBusqueda varchar(100),
@busqueda varchar(100)
AS
SELECT Categorias.Tipo, Categorias.Marca, Categorias.Modelo, Equipos.Serie FROM Categorias INNER JOIN Equipos ON Categorias.Id = Equipos.Id_cat WHERE @tipoBusqueda = @busqueda


--------

Luego por programacion le pongo los campos que serian "La condicion TABLA.CAMPO = ALGO"

String tipoBusqueda = "algo";
String busqueda = "algo mas"

cmd.Parameters.AddWithValue("@tipoBusqueda", tipoBusqueda);
cmd.Parameters.AddWithValue("@busqueda", busqueda);


¿por que no se ejecuta el procedure? sera que no puedo poner el nombretabla.campo desde un string? cuando pongo en duro EQUIPOS.SERIE por ejemplo y solo uso una variable en el procedure funciona, pero como sera dinamico de donde sacare el dato necesito que @tipoBusqueda este ahi en el procedure.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Problema con Procedimiento de Almacenado

Publicado por leonardo_josue (878 intervenciones) el 21/05/2012 18:53:02
Hola Hector:

En tu post no lo mencionas, pero por la sintaxis que estás manejando puedo suponer que estás trabajando con SQL Server correcto??? Mucho ojo, cuando publiques una pregunta en cualquier foro es importante que especifiques con qué motor de BD estás trabajando así como la versión-edición del mismo, ya que si bien todos los motores trabajan con SQL server como lenguaje de consultas, existen diferencias en sintaxis entre cada uno de ellos.

ahora bien, volviendo a tu problema. Si la idea de tu procedimiento almacenado es generar una consulta dinámica entonces NO ES POSIBLE HACERLO DE LA MANERA EN QUE LO PRETENDES. Lo que debes hacer es armar tu consulta a partir de los parámetros que llegan y después EJECUTAR DICHA CONSULTA... dale un vistazo esta liga:

http://msdn.microsoft.com/es-es/library/ms188001.aspx

El procedimiento almacenado sp_executesql te permite enviar a ejecución la consulta que estás armando al vuelo... y te permite por si sola el uso de parámetros, lo que te ayudarían a tener problemas como inyección de SQL malicioso. checa la liga y nos comentas.

Saludos
Leo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problema con Procedimiento de Almacenado

Publicado por Hector Montecinos (2 intervenciones) el 21/05/2012 19:04:58
Oh si, discúlpame, uso Microsoft SQL Server 2008 R2.

Y la instrucción se la paso desde Visual Studio 2012, estoy con C# programando un drowdownlist que dependiendo la selección haga la búsqueda, por ello necesito pasarle a mi primera variable desde que tabla y que campo ira a buscar la igualdad o condición.

Mirare el link que me dejaste, a penas tenga resultados le comentare, gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar