2016-03-30 12 views
0

特定の値が指定されている場合、追加のWHERE -Parameterを適用します。私たちは現在SAP-Hanaに取り組んでいますが、厳密なストアドプロシージャプログラミングをこのプラットフォームに適用することができます。任意のヘルプは非常に高く評価されています!コード:ストアドプロシージャの条件付きWHERE句

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 

私はまだ試したことがありますか?私はCONCATSELECTを計算して、WHEREIF -Conditions)と計算しようとしましたが、EXECUTE -Commandですが、SAP HANAがサポートしていないようです。正確にあなたがAPPLY_FILTER機能を使用することはできませんなぜWHERE ... CASE :wert <> '*' THEN ... END

+1

あなたは... 'と考えており、(LW "testValという" LIKE:。testValというOR:= testValという「* ') ' –

答えて

1
AND (LW."testVal" LIKE :testVal OR :testVal = '*') 
0

:それから私はWHERE -Claus内CASEとの要件に合致するようにしようとしましたか?

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では、条件全体を指定できるようになりました。

すべてのことを文書で http://help.sap.com/saphelp_hanaplatform/helpdata/en/a0/9d584807f84477a64d7625ca45b089/content.htm?frameset=/en/a9/4461d71e8145a78d990deac4823858/frameset.htm&current_toc=/en/ed/4f384562ce4861b48e22a8be3171e5/plain.htm&node_id=73

  • を覆われている
    call test (1, ' "testVal" like ''%ABC%'' '); 
    

    ラース