我有一个接收 2 个参数的 SP,P1
和 P2
,如下所示:
CREATE OR ALTER PROCEDURE MY_PROC (P1 varchar(10), P2 smallint = 1)
RETURNS (
code VARCHAR(10),
name VARCHAR(70),
state VARCHAR(2),
situation VARCHAR(20)
AS
...
...
我需要根据 P2
参数生成 where
子句,如下所示:
if (P2=1) then
where (state='SP' and situation='stopped')
elseif (P2=2)
where (state='MG' and situation='moving')
如何在where子句中使用这种if
语句?
最佳答案
对我而言,您的问题可以转化为 SQL 查询的 WHERE
子句中的简单 OR
条件:
WHERE
(:P2 = 1 AND state='SP' and situation='stopped')
OR (:P2 = 2 AND state='MG' and situation='moving')
关于sql - Firebird 存储过程中的动态 SQL(where),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55054682/