select con campos que pueden venir informados o no
Publicado por jilili (1 intervención) el 19/03/2010 12:09:59
hola, estoy llamando a un procedimiento almacenado de sqlserver 2008 desde visual basic.net.
Como parámetros de entrada tengo dos campos que son CIF y CODIGO POSTAL.
Estos campos pueden venir los dos informados o solo uno y ahí es donde tengo el problema.
He validado los campos y dependiendo de si venía informado o no he ido montando la cadena del where pero no me deja, me obliga a poner el where dentro de la consulta.
Esto es lo que estoy intentando hacer...
Muchas gracias
ALTER PROCEDURE [dbo].[CONSULTA]
-- Add the parameters for the stored procedure here
@var1 VARCHAR(10),
@var2 VARCHAR(5)
AS
BEGIN
declare @cif VARCHAR(10),
@codpostal VARCHAR(5),
@condicion VARCHAR(500)= '';
IF LEN(@cif) > 0
begin
set @condicion = @condicion + 'where cif like "' + @cif + '"'
end
IF LEN(@codpostal)>0
begin
set @condicion = @condicion + ' and codpostal like "' + @codpostal + '"'
end
set @condicion = @condicion + ';';
select * from dbo.empresas & @condicion;
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
END
select con campos que pueden venir informados o no
Como parámetros de entrada tengo dos campos que son CIF y CODIGO POSTAL.
Estos campos pueden venir los dos informados o solo uno y ahí es donde tengo el problema.
He validado los campos y dependiendo de si venía informado o no he ido montando la cadena del where pero no me deja, me obliga a poner el where dentro de la consulta.
Esto es lo que estoy intentando hacer...
Muchas gracias
ALTER PROCEDURE [dbo].[CONSULTA]
-- Add the parameters for the stored procedure here
@var1 VARCHAR(10),
@var2 VARCHAR(5)
AS
BEGIN
declare @cif VARCHAR(10),
@codpostal VARCHAR(5),
@condicion VARCHAR(500)= '';
IF LEN(@cif) > 0
begin
set @condicion = @condicion + 'where cif like "' + @cif + '"'
end
IF LEN(@codpostal)>0
begin
set @condicion = @condicion + ' and codpostal like "' + @codpostal + '"'
end
set @condicion = @condicion + ';';
select * from dbo.empresas & @condicion;
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
END
select con campos que pueden venir informados o no
Valora esta pregunta


0