Где пытаются избежать создания двух sql-курсоров, потому что нам просто нужно изменить предложение WHERE на динамическое.
У нас есть один курсор, выполняющий это предложение WHERE:
WHERE TRIM ( USUARIO ) LIKE @USUARIO )
AND CAST ( M15 . FECLLEGADA AS DATE ) BETWEEN @FINI AND @FFIN
AND M15 . ESTINBOX IN ( 'A' , 'P' )
AND URGENTE LIKE ( COALESCE ( @URGENTE , '' ) CONCAT '%' )
и еще один курсор с этим WHERE CLAUSE:
WHERE
CAST ( M15 . FECLLEGADA AS DATE ) BETWEEN @FINI AND @FFIN
AND TRIM ( USUARIO ) LIKE @USUARIO
AND M15 . ESTINBOX LIKE ( COALESCE ( @ESTADO , '' ) CONCAT '%' )
AND URGENTE LIKE ( COALESCE ( @URGENTE , '' ) CONCAT '%' )
Есть ли способ выполнить это предложение where всего в одном выражении:¿
Это то, что я пробовал:
WHERE
CASE
WHEN @ESTADO='PR' then ESTINBOX IN ('A','P')
ELSE M15.ESTINBOX(COALESCE ( @ESTADO , '' ) CONCAT '%' )
END
Хранимая процедура не компилируется. Если это возможно, как я могу добавить к CASE WHEN дополнительные предложения «И»
USARIO
также можно безопасно запрашивать (удалив начальные пробелы навсегда или если их нет с самого начала). - person Clockwork-Muse   schedule 07.02.2014