Dynamisches SQL in SAP HANA Gespeicherte Prozeduren

Möchte ich eine gespeicherte Prozedur erstellen, in der HANA , die das folgende tut :

  • Akzeptiert IN-parameter vom Typ Tabelle.
  • Akzeptiert andere parameter von Typ varchar.
  • Filter einige Zeilen aus einer bestehenden Tabelle, basierend auf Werte in der Spalte des ersten input-parameter.
  • Versucht zu Sortieren (ORDER BY) Zeilen basierend auf den Kriterien, gegeben durch den zweiten Eingabeparameter.

Hier ist die gespeicherte Prozedur, die ich erstellen möchten

CREATE PROCEDURE DEMO_PROD_EXAMPLE_DYNAMIC(IN TEMPLIST PRODLISTTYPE,IN ORDERSTRING VARCHAR(200))
AS
BEGIN
OUTVAR = SELECT * FROM DEMO_PRODS WHERE NAME IN (SELECT NAME FROM :TEMPLIST);

SELECT * FROM :OUTVAR ORDER BY :ORDERSTRING DESC;

END;

Stehe ich vor folgender Hürde :

  • In den oben genannten Verfahren, Bestellung geschieht nicht bei allen! Wenn ich fest den Namen der Spalte , wie WÄHLEN Sie * AUS :OUTVAR ORDER BY ID DESC; Es funktioniert .
  • Wenn ich versuchen, erstellen Sie eine dynamische SQL-Abfrage wie SELECT * FROM'|| :OUTVAR||' ORDER BY '||:ORDERSTRING||'DESC'; bekomme ich eine exception, dass es nicht erlaubt die Verwendung von varchar und Tabelle geben mit Verkettungsoperator.

Wie kann ich die Sortierung der Ergebnismenge basierend auf einer dynamischen Bedingung (Spalte name/s übergeben-Verfahren) in HANA.

TIA

Schreibe einen Kommentar