stored procedures con parametro uniqueidentifier

22/11/2006 - 15:31 por rafa | Informe spam
Hola Comunidad.

Estoy intentando crear un procedimiento almacenado(server2005) que recibe
determinados paramentros (pero algunos de estos parametros pueden ser nulos).
Lo que estoy intentando es construir la clausula WHERE en el procedimiento
almacenado, una vez construido el where lanzo el select mediasnte EXEC.

El problema esta con los parametros que son uniqueidentifier.

El codigo del procedimiento es el siguiente
ALTER PROCEDURE prueba
(
@pID uniqueidentifier
)
AS
DECLARE @WHERE nvarchar(300)
SET @WHERE='WHERE Respuesta.ID IS NOT NULL '
IF @pID IS NOT NULL
SET @WHERE=@WHERE+'AND cast(Respuesta.ID as nvarchar='+cast(@pID as
nvarchar(36))

Exec('SELECT Respuesta.ID AS ID,Respuesta.Puntuacion AS Puntuacion
FROM Respuesta '+ @WHERE)


Cuando el valor es null no hay problema, pero cuando le asigno un valor
me da el siguiente error:

Mens. 102, Nivel 15, Estado 1, Línea 3
Sintaxis incorrecta cerca de '='.

Si alguien puede aportarme alguna idea.
Gracias.
 

Leer las respuestas

#1 Ele
22/11/2006 - 17:16 | Informe spam
el error es porque no estas cerrando el parentesis del primer cast, en otros
post ya se a discutido que cuando ejecutas un query con la instruccion exec
no hace buen uso de los indices.
porque usas esta instuccion? para ir armando las condiciones segun el
parametro si es nulo?
si es asi pues dentro del if haces un select con la primera condicion y en
el else otro select con la segunda condicion claro con los mismos results
espero te ayude

"rafa" escribió en el mensaje
news:
Hola Comunidad.

Estoy intentando crear un procedimiento almacenado(server2005) que recibe
determinados paramentros (pero algunos de estos parametros pueden ser
nulos).
Lo que estoy intentando es construir la clausula WHERE en el procedimiento
almacenado, una vez construido el where lanzo el select mediasnte EXEC.

El problema esta con los parametros que son uniqueidentifier.

El codigo del procedimiento es el siguiente
ALTER PROCEDURE prueba
(
@pID uniqueidentifier
)
AS
DECLARE @WHERE nvarchar(300)
SET @WHERE='WHERE Respuesta.ID IS NOT NULL '
IF @pID IS NOT NULL
SET @WHERE=@WHERE+'AND cast(Respuesta.ID as nvarchar='+cast(@pID as
nvarchar(36))

Exec('SELECT Respuesta.ID AS ID,Respuesta.Puntuacion AS Puntuacion
FROM Respuesta '+ @WHERE)


Cuando el valor es null no hay problema, pero cuando le asigno un valor
me da el siguiente error:

Mens. 102, Nivel 15, Estado 1, Línea 3
Sintaxis incorrecta cerca de '='.

Si alguien puede aportarme alguna idea.
Gracias.

Preguntas similares