Stored Procedures (SQL Server)

Javier
24 de Diciembre del 2004
Hola, tengo un problema que no se si tiene una soluci贸n simple pero espero que s铆 y que alguien me pueda ayudar. El problema es que tengo un stored procedure con una consulta de SELECT y necesito pasarle como par谩metro toda la condici贸n (que la tengo como un string en una variable de mi sistema) para aplicar filtros sobre los datos.

Ejemplo:

CREATE Procedure viewClientes
@Condicion varchar(200)
AS
SELECT * FROM CLIENTES
WHERE @Condicion
Return

Donde a @Condicion le voy a pasar como valor un string como los siguientes:

- Edad > 20
- Nombre LIKE 'Car%" AND Sexo = 'Femenino'
- FechaIngreso BETWEEN #1/1/2004# AND #31/12/2004#

O cualquier condici贸n que al usuario se le ocurra


No s茅 si se entiende lo que quiero hacer, pero el sql no lo entiende, me da un error al poner "WHERE @Condicion". Hay alguna forma de hacerlo?

Muchas gracias.

Javier

ripquik
24 de Diciembre del 2004
ola javier, tengo que hacer un trabajo sobre el sql de sql server 2000.
he llegado a los procedimientos almacenados, pero resulta que en comparacion con el sql de interbase, encuentro muchas diferencias.
por ejemplo,
1.- como recibir un parametro de entrada en un procedimiento almacenado.
2.- como almacenar el resultado de un select en una variable.

te agradeceria muxo que me ayudases, javier.
gracias

Isa? Islas
24 de Diciembre del 2004
1.- como recibir un parametro de entrada en un procedimiento almacenado.

CREATE PROCEDURE pr_Myprocedimiento
(@MyVariableARecibir1 INT,
@MyvariableARecibir2 VARCHAR(100))
AS
-----------------Cuerpo del store

2.- como almacenar el resultado de un select en una variable.

Solo si es UNA SOLA COLUMNA:

Declare @MyClienteNombre VARCHAR(40)
SELECT @MyClienteNombre = ClienteNombre+' '+ClienteApellido FROM Cliente WHERE ClienteID = 20
PRINT @MyClienteNombre

Isa? Islas
24 de Diciembre del 2004
Voy a postear solo la parte de la ejecucion:

SET NOCOUNT ON
DECLARE @SQLString NVARCHAR(100) -- Depende de la condicion
SET @SQLString = N'SELECT * FROM CLIENTES WHERE '+@CONDICION
EXECUTE sp_executesql @SQLString

La variable @CONDICION, deberia traer los AND, OR, BETWEEN etc.

Te recomiendo que utilices el formato de fecha ANSI: YYYYMMDD

Saludos