[英]As400 - Dynamic Sql where clause
Where are trying to avoid generating two sql cursors because we just need to change the WHERE clause to a dynamic one. 哪里试图避免生成两个sql游标,因为我们只需要将WHERE子句更改为动态子句。
We have one cursor performing this WHERE clause: 我们有一个游标执行此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 '%' )
and another cursor with this WHERE CLAUSE: 和另一个带有此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 '%' )
Is there any way to perform this where clause in just one statement:¿ 有没有办法在一个语句中执行where where子句:¿
This is what I've tried: 这就是我尝试过的:
WHERE
CASE
WHEN @ESTADO='PR' then ESTINBOX IN ('A','P')
ELSE M15.ESTINBOX(COALESCE ( @ESTADO , '' ) CONCAT '%' )
END
Stored procedure is not compiling. 存储过程不编译。 If this is posible How could I append to the CASE WHEN additional "AND" clauses
如果这是可能的话我怎样才能在附加“AND”条款的情况下附加案例
Something like this, may be? 这样的事情可能会是什么?
... WHERE TRIM ( USUARIO ) LIKE @USUARIO
AND CAST ( M15.FECLLEGADA AS DATE ) BETWEEN @FINI AND @FFIN
AND URGENTE LIKE ( COALESCE ( @URGENTE , '' ) CONCAT '%' )
AND (
(@ESTADO = 'PR' AND M15.ESTINBOX IN ( 'A' , 'P' ))
OR
(@ESTADO != 'PR' AND M15.ESTINBOX LIKE COALESCE ( @ESTADO , '' ) CONCAT '%'
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.