Ansicht
Dokumentation

ABENADBC_DDL_DML - ADBC DDL DML

ABENADBC_DDL_DML - ADBC DDL DML

Vendor Master (General Section)   CL_GUI_FRONTEND_SERVICES - Frontend Services  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

- DDL- und DML-Anweisungen

Für das Ausführen von DDL- und DML-Anweisungen bietet die Klasse CL_SQL_STATEMENT die Instanzmethoden

  • EXECUTE_DDL
  • EXECUTE_UPDATE

Die erste Methode ist für DDL-Anweisungen wie CREATE, DROP oder ALTER vorgesehen, während die zweite Methode für die DML-Anweisungen INSERT, UPDATE und DELETE vorgesehen ist.

Beide Methoden haben einen obligatorischen Eingabeparameter STATEMENT vom Typ string, dem eine syntaktisch korrekte SQL-Anweisung übergeben werden muss. Die Methode EXECUTE_UPDATE hat zusätzlich einen Rückgabewert ROWS_PROCESSED, der welche die Anzahl der bearbeiteten Tabellenzeilen zurückgibt.

In DML-Anweisungen können Werte, die an das Datenbanksystem übergeben werden, durch Platzhalter ? parametrisiert werden. An solche Parameter müssen bei Ausführung der Anweisung passende ABAP-Datenobjekte angebunden sein. Diese Anbindung erfolgt über folgende Methoden der Klasse CL_SQL_STATEMENT, die eine Referenz auf ein elementares, strukturiertes oder tabellarisches Datenobjekt erwarten und alternativ verwendet werden können:

  • SET_PARAM
Vor Ausführung der SQL-Anweisung muss diese Methode genau einmal für jeden Platzhalter ? aufgerufen werden. Die Reihenfolge der Aufrufe bestimmt von links nach rechts die Zuordnung der elementaren Datenobjekte zu den Platzhaltern.
  • SET_PARAM_STRUCT
Vor Ausführung der SQL-Anweisung muss diese Methode genau einmal aufgerufen werden. Die Komponenten der Struktur werden von links nach rechts an die Platzhalter gebunden. Die Struktur muss zu Anzahl und Typ der Platzhalter passende Komponenten enthalten.
  • SET_PARAM_TABLE
Diese Methode ist nur für die ändernden SQL-Anweisungen INSERT, UPDATE und DELETE sinnvoll. Sie muss vor Ausführung der SQL-Anweisung genau einmal aufgerufen werden. Die Komponenten der internen Tabelle werden wie bei einer Struktur von links nach rechts an die Platzhalter gebunden. Die Native-SQL-Schnittstelle setzt die Inhalte der Tabellenzeilen in entsprechende Mengenzugriffe um, wie z.B. Mengeneinfügungen oder Mengenlöschungen.

Nach Ausführung jeder SQL-Anweisung wird die Bindung wieder aufgehoben.

Hinweise

  • Die beiden Methoden EXECUTE_DDL und EXECUTE_UPDATE unterscheiden sich technisch nur dadurch, dass EXECUTE_UPDATE die Anzahl der bearbeiteten Tabellenzeilen zurückgibt. Aus Gründen der Lesbarkeit des Programms empfiehlt es sich aber, die Methoden nur wie vorgesehen zu verwenden.
  • Dem optionalen Eingabeparameter IND_REF der Methode SET_PARAM kann eine Datenreferenz auf eine Indikatorvariable vom eingebauten Typ INT2 des ABAP Dictionary übergeben werden. Wenn der Wert einer solchen Indikatorvariablen -1 ist, wird der Wert 0 eines Parameters auf der Datenbank in einen Null-Wert umgesetzt.
  • Die Parametrisierung einer DML-Anweisung durch Platzhalter ? ist aus Sicherheitsgründen einer Verkettung von dynamischen Inhalten vorzuziehen und kann ein Mittel sein, eine SQL-Injection zu verhindern. Wenn die Anweisung nur statische Inhalte aus dem Programm enthält und dynamische Inhalte, die von außerhalb stammen, nur an Operandenpositionen über Platzhalter möglich sind, kann die Anweisung nicht von außen modifiziert werden.
  • Bei Zuweisungen zwischen ABAP-Datenobjekten und Feldern in Datenbanktabellen findet ein Mapping zwischen den ABAP-Typen und den Datenbanktypen statt. Die ABAP-Typen sollten zu den Datenbanktypen passen. Andernfalls müssen in der Native-SQL-Schnittstelle Konvertierungen vorgenommen werden, die plattformabhängig sind und zu Ausnahmen führen können.

Beispiel

Einfügen einer Zeile in eine Datenbanktabelle mit ADBC. Die Tabelle wird zuvor mit geleert und danach mit ausgelesen. Die Werte der Spalten werden durch die Anbindung der Komponenten einer mit dem Instanziierungsoperator NEW erzeugten temporären Struktur an Platzhalter ? bestimmt.






SUBST_MERGE_LIST - merge external lists to one complete list with #if... logic for R3up   BAL_S_LOG - Application Log: Log header data  
Diese Dokumentation steht unter dem Copyright der SAP AG.

Length: 6317 Date: 20240606 Time: 012957     sap01-206 ( 106 ms )