Mit diesem DBM-Kommando übermitteln Sie ein Administrationskommando oder eine SQL-Anweisung an die Datenbankinstanz. Insbesondere bei SQL-Anweisungen ist es jedoch für die Verwendung über eine Programmierschnittstelle gedacht.
Anders als bei Verwendung des DBM-Kommandos db_executenicewollen Sie mit der Antwort so viele Datensätze wie möglich übertragen. Die Menge der übertragenen Daten ist begrenzt durch die Größe des vom DBM-Server übertragenen Antwortpakets.
Wenn es sich um eine SELECT-Anweisung handelt, dann werden vom System die Datensätze der Antwort angezeigt. Wenn aufgrund der begrenzten Größe des Antwortpakets noch nicht alle Daten übertragen wurden, dann verwenden Sie anschließend das DBM-Kommando db_fetch, um ein weiteres Antwortpaket mit Datensätzen zu übertragen. Dies ist jedoch nur dann möglich, wenn Sie sich noch in derselben Datenbanksitzung befinden.
Wenn Sie andere SQL-Anweisungen eingeben, wird die Ausführung der Anweisung mit einer OK-Meldung bestätigt.
Bei der Ausführung von db_execute wird implizit eine Sitzung mit der Datenbankinstanz eröffnet und nach Ausführung des Kommandos wieder beendet. Diese Datenbanksitzung wird im AUTOCOMMIT-Modus eröffnet, d. h. jede eingegebene SQL-Anweisung wird automatisch mit einer COMMIT-Anweisung abgeschlossen.
Wenn eine Folge von SQL-Anweisungen ausgeführt werden soll und diese nur von einem bestimmten Datenbankbenutzer ausgeführt werden können, dann empfiehlt es sich, zunächst eine SQL-Sitzung mit den Daten dieses Datenbankbenutzers zu eröffnen (Siehe: db_connect), dann alle SQL-Anweisungen nacheinander auszuführen und anschließend entweder die Datenbanksitzung (Siehe: db_release) oder den Database Manager CLI zu beenden.
Weitere Informationen zu SQL-Anweisungen
finden Sie in den Dokumentationen SQL-Referenzhandbuch
und
SQL-Tutorial.
Siehe auch:
Tutorial
Datenbankverwaltung, Betriebsmodi im
Database Manager CLI,
Ausführen von
Datenbankanweisungen
Konzepte des
Datenbanksystems, SQL
● Wenn Sie Administrationskommandos ausführen wollen, benötigen Sie die Serverberechtigung AccessUtility.
● Wenn Sie SQL-Anweisungen ausführen wollen, benötigen Sie die Serverberechtigung AccessSQL.
db_execute [<user_type>] <statement>
Optionen
Option |
Beschreibung |
<user_type> |
Benutzertyp, mögliche Werte sind: DBM: erster DBM-Benutzer DBA: Datenbanksystemadministrator SAP: spezieller Datenbankbenutzer im Zusammenhang mit SAP-Anwendungen |
<statement> |
Administrationskommando oder SQL-Anweisung |
OK
[END|CONTINUE]
[<record>
<record>
...]
Werte für die Felder der Antwort
Wert |
Beschreibung |
END |
Die Antwort wurde vollständig ausgegeben |
CONTINUE |
Es liegen noch weitere Datensätze vor, die aufgrund der begrenzten Größe des Antwortpakets nicht übertragen wurden. |
<record> |
Ergebnisdaten der SQL-Anweisung Die Felder in
einem Datensatz sind durch Semikolon voneinander getrennt. |
Im Fehlerfall siehe Antwortformat.
...
db_execute im Kommandomodus verwenden
Aufrufen des Database Manager CLI, Anmelden als Benutzer OLEG mit dem Kennwort MONDAY, Herstellen der Verbindung zur Datenbankinstanz DEMODB,
Anzeigen der Spaltennamen und Kommentare der Tabelle users in der Systemtablelle COLUMNS im Schema DOMAIN:
>dbmcli -u OLEG,MONDAY -d DEMODB db_execute SELECT columnname, comment FROM domain.columns WHERE tablename = 'USERS'
OK
END
'OWNER';(long)
'GROUPNAME';(long)
'USERNAME';(long)
'USERMODE';(long)
'CONNECTMODE';(long)
'MAXTIMEOUT';(long)
'COSTWARNING';(long)
'COSTLIMIT';(long)
'DEFAULTCODE';(long)
'CREATEDATE';(long)
'CREATETIME';(long)
'ALTERDATE';(long)
'ALTERTIME';(long)
'PWCREADATE';(long)
'PWCREATIME';(long)
'SERVERDB';(long)
'SERVERNODE';(long)
'USER_ID';(long)
'ISREPLICATIONUSER';(long)
'COMMENT';(long)
db_execute im Sitzungsmodus verwenden
1. Anmelden an den Database Manager CLI im Sitzungsmodus als Benutzer OLEG mit dem Kennwort MONDAY, Herstellen der Verbindung zur Datenbankinstanz DEMODB:
>dbmcli –u OLEG,MONDAY –d DEMODB
dbmcli on DEMODB>
2. Eröffnen einer Datenbanksitzung:
dbmcli on DEMODB>db_connect
OK
3. Anzeigen des Inhalts der Systemtabelle columns des Schemas domain:
dbmcli on DEMODB>db_execute SELECT * FROM domain.columns
OK
CONTINUE
'DBADMIN';'DBADMIN';'ALLOCATORSTATISTIC';'ALLOCATOR';'OPT';'CHAR';'ASCII';40;(nu
ll);'YES';'SEL+';(null);(null);(null);(null);1;(null);2;'20060406';'00145007';'2
0060406';'00145007';'SYSTEM';(null)
'DBADMIN';'DBADMIN';'ALLOCATORSTATISTIC';'USED_BYTES';'OPT';'FIXED';'';20;0;'YES
';'SEL+';(null);(null);(null);(null);2;(null);3;'20060406';'00145007';'20060406'
;'00145007';'SYSTEM';(null)
'DBADMIN';'DBADMIN';'ALLOCATORSTATISTIC';'MAXUSED_BYTES';'OPT';'FIXED';'';20;0;'
YES';'SEL+';(null);(null);(null);(null);3;(null);4;'20060406';'00145007';'200604
06';'00145007';'SYSTEM';(null)
'DBADMIN';'DBADMIN';'ALLOCATORSTATISTIC';'ALLOCATED_BYTES';'OPT';'FIXED';'';20;0
;'YES';'SEL+';(null);(null);(null);(null);4;(null);5;'20060406';'00145007';'2006
0406';'00145007';'SYSTEM';(null)
...
...
4. Übertragen des nächsten Antwortpakets:
dbmcli on DEMODB>db_fetch
OK
CONTINUE
'DBADMIN';'DBADMIN';'LOCKSTATISTICS';'REQTIMEOUT';'OPT';'CHAR';'UNICODE';10;(nul
l);'YES';'SEL+';(null);(null);(null);(null);10;(null);11;'20060406';'00145007';'
20060406';'00145007';'SYSTEM';(null)
'DBADMIN';'DBADMIN';'LOCKSTATISTICS';'LASTWRITE';'OPT';'CHAR';'UNICODE';10;(null
);'YES';'SEL+';(null);(null);(null);(null);11;(null);12;'20060406';'00145007';'2
0060406';'00145007';'SYSTEM';(null)
...
...
5. Übertragen des nächsten Antwortpakets:
dbmcli on DEMODB>db_fetch
OK
CONTINUE
…
…
…
6. Übertragen des nächsten Antwortpakets:
dbmcli on DEMODB>db_fetch
OK
END
…
…
'HOTEL';'MONA';'ROOM';'FREE';'OPT';'FIXED';'';3;0;'YES';'SEL+UPD+';(null);(null)
;(null);(null);3;(null);3;'20060406';'00145012';'20060406';'00145012';'TABLE';(n
ull)
'HOTEL';'MONA';'ROOM';'PRICE';'OPT';'FIXED';'';6;2;'YES';'SEL+UPD+';(null);(null
);(null);(null);4;(null);4;'20060406';'00145012';'20060406';'00145012';'TABLE';(null)
7. Beenden der Datenbanksitzung
dbmcli on DEMODB>db_release
OK
dbmcli on DEMODB>