如果给出了特定值,我想应用额外的WHERE
- 参数。我们目前正在研究SAP-Hana,但我们可以将严格的存储过程编程调整到这个平台。任何帮助非常感谢!所以这是代码:
PROCEDURE test (
IN id integer,
IN testVal VARCHAR(20) DEFAULT '*',
out ex_return DB-SCHEME
)
LANGUAGE SQLSCRIPT
SQL SECURITY INVOKER
--DEFAULT SCHEMA <default_schema_name>
READS SQL DATA AS
BEGIN
ex_return =
SELECT
L."ID",
LW."ID"
FROM DB1 L
INNER JOIN DB2 LW
ON L."id" = LW."id"
WHERE
L."id" = :id
AND LW."testVal" LIKE :testVal -- this one only, if :testVal != '*'
;
END
我尝试了什么?我尝试CONCAT
SELECT
计算WHERE
(IF
- 条件)a EXECUTE
- 命令,但似乎SAP HANA没有'支持那个。然后我尝试将要求与CASE
中的WHERE
匹配 - 克劳斯:WHERE ... CASE :wert <> '*' THEN ... END
答案 0 :(得分:1)
AND (LW."testVal" LIKE :testVal OR :testVal = '*')
答案 1 :(得分:0)
为什么不能使用APPLY_FILTER函数?
PROCEDURE test (
IN id integer,
IN testVal VARCHAR(20) DEFAULT '',
out ex_return DB-SCHEME
)
LANGUAGE SQLSCRIPT
SQL SECURITY INVOKER
--DEFAULT SCHEMA <default_schema_name>
READS SQL DATA AS
BEGIN
ex_return =
SELECT
L."ID",
LW."ID"
FROM DB1 L
INNER JOIN DB2 LW
ON L."id" = LW."id"
WHERE
L."id" = :id;
ex_filtered = APPLY_FILTER (:ex_return, :testVal);
END;
在变量testVal中,您现在可以提供整个条件,例如
call test (1, ' "testVal" like ''%ABC%'' ');
中涵盖的所有内容