procedimiento almacenado SELECT con parametro WHERE

07/08/2006 - 17:41 por Hugo Gsell | Informe spam
No estoy pudiendo implementar un select con parametro que yo le paso
la idea es tener 2 parametros uno para el Where y el otro para el ORDER BY
pero puede que no vayan es decir si pcondicion es vacion no hay condicion
where
y si pOrden es vacio no hay ORDER BY
intente implementarlo de la siguiente manera (y varias versiones mas pero
ninguna funcionó)
SE ADEMAS QUE EN MI EJEMPLO EL IIF NO FUNCIONA... pero séría como lo
implementaría en código visual basic jeje
DESDE YA MUCHAS GRACIAS .
Hugo A. Gsell

CREATE PROCEDURE [dbo].[RecuperaUsuarios]
@NroRegsEncontrados smallint output,
@pCondicion nvarchar,
@pOrden nvarchar

AS
SET NOCOUNT ON
DECLARE @error int
DECLARE @NroRegsAfectados smallint
DECLARE @xCondicion nvarchar
DECLARE @xOrden nvarchar
BEGIN
SET NOCOUNT ON;

SELECT * FROM Usuarios IIF(xCondicion!='', 'WHERE ' & xConcidion) & ' ' &
IIF(xOrden!='','','ORDER BY ' & xOrden)
SET SELECT @error = @@ERROR,@NroRegsAfectados = @@ROWCOUNT
SET @NroRegsEncontrados = @NroRegsAfectados
END
RETURN @error
GO
 

Leer las respuestas

#1 Maxi
07/08/2006 - 17:49 | Informe spam
Hola, el iff no existe como comando de SQLserver, en su reemplazo tenes el
CASE.
Para lo que necesitas hacer lo podes armar con sql-dinamico (sp_executesql)
pero debes saber que no es una buena tecnica de programacion


Salu2
Maxi [MVP SQL SERVER]
www.sqlgurus.org
Speaker INETA
Speaker Culminis


"Hugo Gsell" escribió en el mensaje
news:%
No estoy pudiendo implementar un select con parametro que yo le paso
la idea es tener 2 parametros uno para el Where y el otro para el ORDER BY
pero puede que no vayan es decir si pcondicion es vacion no hay condicion
where
y si pOrden es vacio no hay ORDER BY
intente implementarlo de la siguiente manera (y varias versiones mas pero
ninguna funcionó)
SE ADEMAS QUE EN MI EJEMPLO EL IIF NO FUNCIONA... pero séría como lo
implementaría en código visual basic jeje
DESDE YA MUCHAS GRACIAS .
Hugo A. Gsell

CREATE PROCEDURE [dbo].[RecuperaUsuarios]
@NroRegsEncontrados smallint output,
@pCondicion nvarchar,
@pOrden nvarchar

AS
SET NOCOUNT ON
DECLARE @error int
DECLARE @NroRegsAfectados smallint
DECLARE @xCondicion nvarchar
DECLARE @xOrden nvarchar
BEGIN
SET NOCOUNT ON;

SELECT * FROM Usuarios IIF(xCondicion!='', 'WHERE ' & xConcidion) & ' ' &
IIF(xOrden!='','','ORDER BY ' & xOrden)
SET SELECT @error = @@ERROR,@NroRegsAfectados = @@ROWCOUNT
SET @NroRegsEncontrados = @NroRegsAfectados
END
RETURN @error
GO


Preguntas similares