formatsql: Einfache SQL-Anweisungen formatieren und mit Annotationen versehen

Nachdem Sie eine SQL-Anweisung an die formatsql-API übergeben, gibt die API diese lesefreundlich formatiert zurück. Die formatsql-API kann die Anweisung auch mit Statistikannotationen versehen.

Es ist nicht erforderlich, die SQL-Anweisung über den IBM® Data Studio-Client zu erfassen, bevor Sie diese API aufrufen.

Eingabeparameter

Übergeben Sie die folgenden Paare von Schlüsseln und Werten über diese URL an die API: https://localhost/tuning/formatsql

Tabelle 1. Eingabeparameter
Key (Schlüssel) Wert Mögliche Werte Standardwert
dbType Der Typ des Datenservers. ZOS  
dbHost Der Host des Datenservers. Domänenname oder IP-Adresse  
dbPort Die Portnummer des Datenservers    
dbName Der Name des Datenservers    
dbUser Die bei der Herstellung einer Verbindung zum Datenserver zu verwendende ID.    
dbPassword Das bei der Herstellung einer Verbindung zum Datenserver zu verwendende Kennwort.    
sql Der Text der SQL-Anweisung.    
showAnnotation Legt fest, ob die SQL-Anweisung mit Statistikannotationen versehen werden soll. Wenn Sie diesen Parameter angeben, bearbeitet die API die SQL-Anweisung mit EXPLAIN, bevor sie sie formatiert und mit Annotationen versehen zurückgibt. false, true true
schema Das Schema für den EXPLAIN-Prozess, das für nicht qualifizierte Objekte in der SQL-Anweisung verwendet werden soll. Dieser Wert überschreibt den Wert, der in der Datei tuning_service.properties festgelegt wurde.    
sqlid Legt den Wert für das Sonderregister CURRENT SQLID fest.   Wenn Sie keinen Wert angeben, verwendet der Optimierungsservice die Berechtigungs-ID, die für die Herstellung der Verbindung zum Subsystem angegeben wurde.

Ausgabeparameter

Die API übergibt die folgenden Paare von Schlüsseln und Werten:

Tabelle 2. Ausgabeparameter
Schlüssel Wert
code Der Rückkehrcode vom Web-API.
0
Ohne Warnungen beendet
4
Mit Warnungen beendet
8
Infolge eines Fehlers ohne Abschluss beendet
output Die formatierte SQL-Anweisung mit oder ohne Annotationen.
message Fehler- oder Warnnachrichten.
exception Informationen zu einer eventuell aufgetretenen Ausnahmebedingung. Diese Informationen können dem IBM Support während der Arbeit für Sie bei der Fehlerbehebung helfen.

Beispiel 1

Dieses Beispiel verwendet cURL, um eine SQL-Anweisung an die formatsql-API zu übergeben, die die Anweisung formatiert und mit Statistikannotationen versehen zurückgibt.

Eingabe
curl 
--insecure 
-X POST 
-H "Content-Type: application/json; charset=UTF-8"
--data "{ 
   dbType:ZOS, 
   dbHost:Host,
   dbPort:Portnummer,
   dbName:Subsystem,
   dbUser:Benutzer-ID,
   dbPassword:Kennwort,
   sql:\"SELECT N_NAME FROM NATION WHERE N_NATIONKEY < 10\" 
   }"
https://localhost/tuning/formatsql
Ausgabe
{ 
"code":0, 
"message":"SELECT authorization_ID.NATION.N_NAME\n
      FROM authorization_ID.NATION  --CARDF=25  --QUALIFIED_ROWS=11 
            --NPAGESF=0\n
      WHERE authorization_ID.NATION.N_NATIONKEY < 10  --COLCARDF=25 
            --MAX_FREQ=(missing) --FF=0.44" 
}

Beispiel 2

Dieses Beispiel verwendet cURL, um eine SQL-Anweisung an die formatsql-API zu übergeben, wobei showAnnotation auf "false" (falsch) gesetzt ist. Hierbei liegt jedoch ein Fehler vor, weil die Tabelle Benutzer-ID.NATION nicht definiert ist.

Eingabe
curl 
--insecure 
-X POST
-H "Content-Type: application/json; charset=UTF-8"
--data "{
   dbType:ZOS,
   dbHost:Host,
   dbPort:Portnummer,
   dbName:Subsystem,
   dbUser:Benutzer-ID,
   dbPassword:Kennwort,
   sql:\"SELECT N_NAME FROM NATION WHERE N_NATIONKEY < 10\",
   showAnnotation:false 
   }"
https://localhost/tuning/formatsql
Ausgabe
{ 
"code":8, 
"error":"Die Anweisung EXPLAIN ist fehlgeschlagen. Der folgende Fehler wurde zurückgegeben:
   SQLCODE: -204, SQLSTATE-Wert: 42704.Die SQL-Anweisung ist fehlgeschlagen.", 
"exception":"com.ibm.datatools.dsoe.explain.zos.exception.ExplainException:
   com.ibm.datatools.dsoe.common.da.exception.OSCSQLException:
   com.ibm.db2.jcc.am.SqlSyntaxErrorException: Benutzer-ID.NATION IST EIN
      NICHT DEFINIERTER NAME.
   SQLCODE=-204, SQLSTATE-WERT=42704, TREIBER=3.67.24..."
}

Feedback