Interne Tabellen (SQLScript): Unterschied zwischen den Versionen

Aus MattWiki
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
Zeile 5: Zeile 5:
https://github.com/SAP-samples/hana-xsa-opensap-hana7/blob/master/db/src/procedures/build_products.hdbprocedure
https://github.com/SAP-samples/hana-xsa-opensap-hana7/blob/master/db/src/procedures/build_products.hdbprocedure


== Interne Tabellen und Variablen definieren ==
== Variablendeklaration ==


Interne Tabellen können mit <code>TABLE</code>, vgl. Signatur der folgenden Procedure, oder mit <code>DECLARE TABLE LIKE</code> erstellt werden. Normale Variablen können mit <code>DECLARE</code> erstellt werden:
=== Interne Tabellen deklarieren ===
 
Interne Tabellen können mit <code>TABLE</code> in der signatur einer Procedure definiert werden:


<syntaxhighlight lang="sql">
<syntaxhighlight lang="sql">
Zeile 21: Zeile 23:
BEGIN
BEGIN


  ...
END
</syntaxhighlight>
Definition einer internen Tabelle mit <code>DECLARE TABLE LIKE</code>:
<syntaxhighlight lang="sql">
declare lt_products table like :ex_products;
declare lt_products table like :ex_products;
</syntaxhighlight>
=== Variablen und Arrays deklarieren ===
Definition von Variablen mit Vorgabewert, Arrays, etc. mit <code>DECLARE</code>:
<syntaxhighlight lang="sql">
declare lv_index int = 0;
declare lv_index int = 0;
END
declare lv_del_index int array;
declare lv_array_index int = 0;
</syntaxhighlight>
</syntaxhighlight>


== SELECT from DB ==
== SELECT from DB ==
Zeile 61: Zeile 81:
== SEARCH ==
== SEARCH ==


== FOR-Loop ==
== Kontrollstrukturen ==
 
=== IF-Abfrage ===
 
=== FOR-Loop ===





Version vom 10. April 2020, 14:32 Uhr

Ähnlich zu ABAP kann man in SQLScript ebenfalls mit internen Tabellen arbeiten. Nachfolgend sind unterschiedliche Nutzungsbeispiele aufgeführt.

Eine Implementierung der untenstehenden Beispiele in Form einer Stored Procedure findet sich hier: https://github.com/mattxdev/openSAPHANA/blob/master/db/src/procedures/build_products.hdbprocedure https://github.com/SAP-samples/hana-xsa-opensap-hana7/blob/master/db/src/procedures/build_products.hdbprocedure

Variablendeklaration

Interne Tabellen deklarieren

Interne Tabellen können mit TABLE in der signatur einer Procedure definiert werden:

PROCEDURE "build_products"( 
			OUT ex_products TABLE(
				PRODUCTID NVARCHAR(10),
				CATEGORY NVARCHAR(20),
				PRICE DECIMAL(15,2) ) )
   LANGUAGE SQLSCRIPT
   SQL SECURITY INVOKER
   --DEFAULT SCHEMA <default_schema_name>
   READS SQL DATA AS
BEGIN

  ...
END


Definition einer internen Tabelle mit DECLARE TABLE LIKE:

	declare lt_products table like :ex_products;


Variablen und Arrays deklarieren

Definition von Variablen mit Vorgabewert, Arrays, etc. mit DECLARE:

	declare lv_index int = 0;
	declare lv_del_index int array;
	declare lv_array_index int = 0;


SELECT from DB

Befüllung der internen Tabelle per SELECT-Statement:

	lt_products = SELECT PRODUCTID, CATEGORY, PRICE from "MD.Products";

INSERT

Beispiele für Befüllung von internen Tabellen, z.B. Zuweisung mit dem Inhalt einer anderen internen Tabelle:

	:ex_products.INSERT(:lt_products);


Einfügen von Datensätzen mit Angabe des Datensatzes und eines Indexes:

	:ex_products.INSERT(('ProductA','Software','1999.99'),1);
	:ex_products.INSERT(('ProductB','Software','2999.99'),2);
	:ex_products.INSERT(('ProductC','Software','3999.99'),3);

Datensätze an bestehender Stelle werden nach unten geschoben. Wenn eine Indexposition gewählt wird, die sich mehr, als eins nach dem letzten bestehenden Datensatz befindet, werden die Index-Positionen zwischen den bestehenden und den neuen Datensätzen mit leeren Datensätzen aufgefüllt.

UPDATE

DELETE

SEARCH

Kontrollstrukturen

IF-Abfrage

FOR-Loop

Referenz

SAP HANA SQLScript Reference for SAP HANA Platform 2.0 SPS04 v1.1 2019-10-31: https://help.sap.com/doc/6254b3bb439c4f409a979dc407b49c9b/2.0.04/en-US/SAP_HANA_SQL_Script_Reference_en.pdf