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

Preguntas similare

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


Respuesta Responder a este mensaje
#2 Hugo Gsell
08/08/2006 - 15:40 | Informe spam
Lo que necesito especificamente es que TODO EL WHERE pueda ser pasado como
parametro...
es decir, esto que pongo ahora funciona
CondicionNombre="California"
SELECT * FROM Sectores WHERE NomSector= CondicionNombre.

pero lo que yo necesito es algo como
CondicionNombre="NomSector=California"
SELECT * FROM Sectores WHERE CondicionNombre

Se entiende?

Hugo a. Gsell
Sgo del Estero
Argentina

"Maxi" escribió en el mensaje
news:
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






Respuesta Responder a este mensaje
#3 Maxi
08/08/2006 - 15:56 | Informe spam
Hola, entonces vas a tener que usar sql-dinamico (sp_executesql) revisa en
tus libros on line la sentencia y como se aplica


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


"Hugo Gsell" escribió en el mensaje
news:
Lo que necesito especificamente es que TODO EL WHERE pueda ser pasado como
parametro...
es decir, esto que pongo ahora funciona
CondicionNombre="California"
SELECT * FROM Sectores WHERE NomSector= CondicionNombre.

pero lo que yo necesito es algo como
CondicionNombre="NomSector=California"
SELECT * FROM Sectores WHERE CondicionNombre

Se entiende?

Hugo a. Gsell
Sgo del Estero
Argentina

"Maxi" escribió en el mensaje
news:
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










Respuesta Responder a este mensaje
#4 Hugo Gsell
08/08/2006 - 16:58 | Informe spam
ok. Aunque no me gusta mucho el tema de utilizar... sql-dinamico o sea
posiblemente NO LO VOY A HACER.
Gracias por tu orientación.
Un saludo.

Hugo A. Gsell
Sgo del Estero
Argentina
"Maxi" escribió en el mensaje
news:%
Hola, entonces vas a tener que usar sql-dinamico (sp_executesql) revisa en
tus libros on line la sentencia y como se aplica


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


"Hugo Gsell" escribió en el mensaje
news:
Lo que necesito especificamente es que TODO EL WHERE pueda ser pasado
como parametro...
es decir, esto que pongo ahora funciona
CondicionNombre="California"
SELECT * FROM Sectores WHERE NomSector= CondicionNombre.

pero lo que yo necesito es algo como
CondicionNombre="NomSector=California"
SELECT * FROM Sectores WHERE CondicionNombre

Se entiende?

Hugo a. Gsell
Sgo del Estero
Argentina

"Maxi" escribió en el mensaje
news:
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














Respuesta Responder a este mensaje
#5 Maxi
08/08/2006 - 17:30 | Informe spam
Yo en estos casos me olvido de usar SP y armo las consultas dinamicas desde
la aplicacion. Con SQL2005 lo que hice fue una funcion en CLR que hace esto
por ej


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


"Hugo Gsell" escribió en el mensaje
news:%
ok. Aunque no me gusta mucho el tema de utilizar... sql-dinamico o sea
posiblemente NO LO VOY A HACER.
Gracias por tu orientación.
Un saludo.

Hugo A. Gsell
Sgo del Estero
Argentina
"Maxi" escribió en el mensaje
news:%
Hola, entonces vas a tener que usar sql-dinamico (sp_executesql) revisa
en tus libros on line la sentencia y como se aplica


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


"Hugo Gsell" escribió en el mensaje
news:
Lo que necesito especificamente es que TODO EL WHERE pueda ser pasado
como parametro...
es decir, esto que pongo ahora funciona
CondicionNombre="California"
SELECT * FROM Sectores WHERE NomSector= CondicionNombre.

pero lo que yo necesito es algo como
CondicionNombre="NomSector=California"
SELECT * FROM Sectores WHERE CondicionNombre

Se entiende?

Hugo a. Gsell
Sgo del Estero
Argentina

"Maxi" escribió en el mensaje
news:
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


















email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida