Error en procedimiento almacenado

04/03/2008 - 10:11 por Cristian Meneses | Informe spam
Buenas a todos.
Tengo varios procedimientos almacenados que tienen la misma logica,
pero este no funciona. La sintaxis esta correcta pero me da error en
ORDER y si lo saco error en AND. Por lo que he visto y comentando
partes, el error esta despues del ELSE, pero no logro verlo. Será la
cantidad de caracteres que puedo ejecutar con un EXEC o algo por el
estilo?

CREATE PROCEDURE [dbo].[GETTiposMaster]
(
@IDTipoMaster int = NULL,
@CodTipoMaster int = NULL,
@SQLFiltro varchar(8000) = NULL
)
AS
IF @SQLFiltro = NULL
SELECT
IDTipoMaster,
CodTipoMaster as 'Cod Tipo Master',
TipoMaster as 'Tipo Master'
FROM TiposMaster
WHERE Eliminado = 0 AND
IDTipoMaster = CASE WHEN @IDTipoMaster = NULL THEN IDTipoMaster
ELSE @IDTipoMaster END AND
CodTipoMaster = CASE WHEN @CodTipoMaster = NULL THEN CodTipoMaster
ELSE @CodTipoMaster END
ORDER BY TipoMaster
ELSE
EXEC('SELECT
IDTipoMaster,
CodTipoMaster as ''Cod Tipo Master'',
TipoMaster as ''Tipo Master''
FROM TiposMaster
WHERE Eliminado = 0 AND ' + @SQLFiltro + ' ORDER BY TipoMaster')
GO

Muchas gracias por adelantado. Atte


Cristian Meneses
SQL Server 2000/2005

Preguntas similare

Leer las respuestas

#11 Luis Tarzia
04/03/2008 - 19:38 | Informe spam
Porque no probas a setear una variable con la sentencia
set @sqlstring = 'select .' + @sqlfiltro + ' order by' y luego
execute (@sqlstring)
"Cristian Meneses" escribió en el mensaje
news:
Hola Juan Carlos
Sigue funcionando mal, saque las comillas dobles por [ ] y nada.
Gracias

Cristian Meneses
Respuesta Responder a este mensaje
#12 jcac
04/03/2008 - 21:10 | Informe spam
Hola Cristian

Podrías probar con:

IF @SQLFiltro Is Null no se si funcione

Lo otro por que funcionan los otros lee en los BOL la instrucción SET
ANSI_NULLS

Saludos

Juan Carlos

"Cristian Meneses" escribió en el mensaje
news:
Ya esta!!!! Error solucionado..
El error lo daba al ejecutarlo, no habia error de sintaxis al crear el
procedimiento.
El error estaba en el IF, aunque todavia no entiendo como funciona en
otros procedimientos. Parece ser que no hace lo que corresponde IF
@SQLFiltro = NULL, ya que si es un valor NULL no entra sino que lo
hace en el ELSE, luego se encuentra con un AND ' + @SQLFiltro + '
ORDER y dado que esta nulo alli si hay un problema de sintaxis al
quedar el string como "AND ORDER".
Lo solucione haciendo un IF ISNULL(@SQLFiltro, '') = '', no se hay una
forma mas elegante, pero de esta forma si funciono correctamente.
Gracias a todos


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