Error en Store Procedure

tema enviado por Maurito22 en SQL Server
tema iniciado el 26/02/2008
Buenas a todos, Tengo un SP que creé para correr una query de referencias cruzadas, que me sirve para mostrar datos en un sitio ASP.NET. Pero el SP me tira errores por todos lados. Los mensajes de errores son la mayoría así: "Must declare the variable '@xxxx' Pero yo declaro las variables al inicio. No se donde puedo estar fallando, no soy experto en SP ni mucho menos. Les pongo un pedazo del SP donde hay conflictos: CREATE PROCEDURE sp_Totales ( @nombre nvarchar(50), @periodo nvarchar(50), @fini nvarchar(50), @ffin nvarchar (50) ) AS if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[tb_temp1]') and OBJECTPROPERTY(id, N'IsTable') = 1) drop table [dbo].[tb_temp1] GO CREATE TABLE tb_temp1 (Nombre varchar(50) NOT NULL, Tipo varchar(50) NOT NULL, Saldo decimal(6,2) NOT NULL) GO if @nombre = 'Todos' if @periodo = 'Ultimo Mes' INSERT INTO tb_temp1 (Nombre, Tipo, Saldo) SELECT tb_usuarios.Nombre, tb_tipos.Tipo As Tipo_Saldo, sum(tb_almacen.TotalTiempo) As Saldo FROM (tb_almacen INNER JOIN tb_usuarios ON CodUsuario = IDUsuario) INNER JOIN tb_tipos ON tb_almacen.CodTipo = tb_tipos.IDTipo WHERE tb_almacen.Mes = MONTH(GETDATE()) GROUP BY tb_usuarios.Nombre, tb_tipos.Tipo ORDER BY tb_usuarios.Nombre Asc else if @periodo = 'Seleccionar' INSERT INTO tb_temp1 (Nombre, Tipo, Saldo) SELECT tb_usuarios.Nombre, tb_tipos.Tipo As Tipo_Saldo, sum(tb_almacen.TotalTiempo) As Saldo FROM (tb_almacen INNER JOIN tb_usuarios ON CodUsuario = IDUsuario) INNER JOIN tb_tipos ON tb_almacen.CodTipo = tb_tipos.IDTipo WHERE tb_almacen.Fecha BETWEEN convert(datetime, @fini, 103) AND convert(datetime, @ffin, 103) GROUP BY tb_usuarios.Nombre, tb_tipos.Tipo ORDER BY tb_usuarios.Nombre Asc else INSERT INTO tb_temp1 (Nombre, Tipo, Saldo) SELECT tb_usuarios.Nombre, tb_tipos.Tipo As Tipo_Saldo, sum(tb_almacen.TotalTiempo) As Saldo FROM (tb_almacen INNER JOIN tb_usuarios ON CodUsuario = IDUsuario) INNER JOIN tb_tipos ON tb_almacen.CodTipo = tb_tipos.IDTipo GROUP BY tb_usuarios.Nombre, tb_tipos.Tipo ORDER BY tb_usuarios.Nombre Asc else if @periodo = 'Ultimo Mes' INSERT INTO tb_temp1 (Nombre, Tipo, Saldo) SELECT tb_usuarios.Nombre, tb_tipos.Tipo As Tipo_Saldo, sum(tb_almacen.TotalTiempo) As Saldo FROM (tb_almacen INNER JOIN tb_usuarios ON CodUsuario = IDUsuario) INNER JOIN tb_tipos ON tb_almacen.CodTipo = tb_tipos.IDTipo WHERE tb_usuarios.Nombre = @nombre AND tb_almacen.Mes = MONTH(GETDATE()) GROUP BY tb_usuarios.Nombre, tb_tipos.Tipo ORDER BY tb_usuarios.Nombre Asc else if @periodo = 'Seleccionar' INSERT INTO tb_temp1 (Nombre, Tipo, Saldo) SELECT tb_usuarios.Nombre, tb_tipos.Tipo As Tipo_Saldo, sum(tb_almacen.TotalTiempo) As Saldo FROM (tb_almacen INNER JOIN tb_usuarios ON CodUsuario = IDUsuario) INNER JOIN tb_tipos ON tb_almacen.CodTipo = tb_tipos.IDTipo WHERE tb_usuarios.Nombre = @nombre AND tb_almacen.Fecha BETWEEN convert(datetime, @fini, 103) AND convert(datetime, @ffin, 103) GROUP BY tb_usuarios.Nombre, tb_tipos.Tipo ORDER BY tb_usuarios.Nombre Asc else INSERT INTO tb_temp1 (Nombre, Tipo, Saldo) SELECT tb_usuarios.Nombre, tb_tipos.Tipo As Tipo_Saldo, sum(tb_almacen.TotalTiempo) As Saldo FROM (tb_almacen INNER JOIN tb_usuarios ON CodUsuario = IDUsuario) INNER JOIN tb_tipos ON tb_almacen.CodTipo = tb_tipos.IDTipo WHERE tb_usuarios.Nombre = @nombre GROUP BY tb_usuarios.Nombre, tb_tipos.Tipo ORDER BY tb_usuarios.Nombre Asc Estoy seguro que los if anidados estan incorrectos al usar los parametros que declare. Podrian ayudarme?? Muchas gracias, Mauro