Interne Tabellen (SQLScript): Unterschied zwischen den Versionen
Matt (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
Matt (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
||
Zeile 1: | Zeile 1: | ||
Ähnlich zu ABAP kann man in SQLScript ebenfalls mit internen Tabellen arbeiten. | Ä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 | |||
== Interne Tabelle definieren == | |||
Interne Tabellen können mit <code>TABLE</code>, vgl. Signatur der folgenden Procedure, oder mit <code>DECLARE xxx TABLE LIKE xxx</code> erstellt werden: | |||
<syntaxhighlight lang="sql"> | |||
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 | |||
declare lt_products table like :ex_products; | |||
END | |||
</syntaxhighlight> | |||
== SELECT from DB == | == SELECT from DB == | ||
Befüllung der internen Tabelle per SELECT-Statement: | |||
<syntaxhighlight lang="sql"> | |||
lt_products = SELECT PRODUCTID, CATEGORY, PRICE from "MD.Products"; | |||
</syntaxhighlight> | |||
== INSERT == | == INSERT == | ||
Beispiele für Befüllung von internen Tabellen, z.B. Zuweisung mit dem Inhalt einer anderen internen Tabelle: | |||
<syntaxhighlight lang="sql"> | |||
:ex_products.INSERT(:lt_products); | |||
</syntaxhighlight> | |||
Einfügen von Datensätzen mit Angabe des Datensatzes und eines Indexes. | |||
<syntaxhighlight lang="sql"> | |||
:ex_products.INSERT(('ProductA','Software','1999.99'),1); | |||
:ex_products.INSERT(('ProductB','Software','2999.99'),2); | |||
:ex_products.INSERT(('ProductC','Software','3999.99'),3); | |||
</syntaxhighlight> | |||
== UPDATE == | == UPDATE == | ||
Zeile 27: | Zeile 64: | ||
== | == Referenz == | ||
SAP HANA SQLScript Reference for SAP HANA Platform 2.0 SPS04: https://help.sap.com/doc/6254b3bb439c4f409a979dc407b49c9b/2.0.04/en-US/SAP_HANA_SQL_Script_Reference_en.pdf | 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 | ||
[[Category:ABAP]] | |||
[[Category:SQLScript]] | [[Category:SQLScript]] |
Version vom 10. April 2020, 13:47 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
Interne Tabelle definieren
Interne Tabellen können mit TABLE
, vgl. Signatur der folgenden Procedure, oder mit DECLARE xxx TABLE LIKE xxx
erstellt 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
declare lt_products table like :ex_products;
END
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);
UPDATE
DELETE
SEARCH
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