如果给出了一个特定的值,我想应用一个额外的WHERE-Parameter。我们目前正在研究SAP,但是我们可能能够使严格的存储过程编程适应这个平台。任何帮助都是非常感谢的!下面是密码:
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 (IF-Conditions)和后来的EXECUTE-Command来实现SAP,但是看起来SAP并不支持这一点。然后,我尝试将CASE与WHERE-Claus:WHERE ... CASE :wert <> '*' THEN ... END中的需求相匹配。
发布于 2016-03-30 09:11:36
AND (LW."testVal" LIKE :testVal OR :testVal = '*')发布于 2016-03-30 13:56:43
为什么不能使用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%'' ');文档id=73中涵盖的所有内容
https://stackoverflow.com/questions/36304279
复制相似问题