formatsql: Formatear y anotar sentencias SQL individuales

Después de pasar una sentencia SQL a la API formatsql, la API la devuelve con formato para facilitar su lectura. La API formatsql también puede anotar la sentencia con estadísticas.

No es necesario capturar la sentencia SQL mediante el cliente de IBM® Data Studio antes de invocar esta API.

Parámetros de entrada

Pase los siguientes pares de claves y valores a la API mediante este URL: https://localhost/tuning/formatsql

Tabla 1. Parámetros de entrada
Clave Valor Valores posibles Valor predeterminado
dbType El tipo de servidor de datos. ZOS  
dbHost El host del servidor de datos. Nombre de dominio o dirección IP  
dbPort El número de puerto del servidor de datos    
dbName El nombre del servidor de datos    
dbUser El ID que se ha de utilizar para conectarse al servidor de datos.    
dbPassword La contraseña que se ha de utilizar para conectarse al servidor de datos.    
sql Texto de la sentencia SQL.    
showAnnotation Determinar si se ha de anotar la sentencia SQL con las estadísticas. Si incluye este parámetro, la API explica la sentencia SQL antes de devolver la sentencia con formato y anotada. false, true true
schema El esquema que ha de utilizar el proceso EXPLAIN para los objetos no calificados de la sentencia SQL. Este valor altera temporalmente el valor establecido en el archivo tuning_service.properties.    
sqlid Establece el valor para el registro especial CURRENT SQLID.   Si no especifica un valor, el servicio de ajuste utiliza el ID de autorización especificada para la conexión en el subsistema.

Parámetros de salida

La API devuelve los siguientes pares de claves y valores:

Tabla 2. Parámetros de salida
Clave Valor
code El código de retorno de la API web.
0
Completado con avisos
4
Completado con avisos
8
Finalizado sin completar debido a un error
output La sentencia SQL con formato, con o sin anotaciones.
message Cualquier mensaje de error o de aviso.
exception Información acerca de la excepción, si se ha producido una. Esta información puede ser útil para el servicio de soporte de IBM si trabaja con ellos para la resolución de un problema.

Ejemplo 1

En este ejemplo se utiliza cURL para pasar una sentencia SQL a la API formatsql, la cual devuelve la sentencia con formato y anotada con estadísticas.

Entrada
curl
--insecure
-X POST
-H "Content-Type: application/json; charset=UTF-8"
--data "{
   dbType:ZOS,
   dbHost:host,
   dbPort:port_number,
   dbName:subsystem,
   dbUser:user_ID,
   dbPassword:password,
   sql:\"SELECT N_NAME FROM NATION WHERE N_NATIONKEY < 10\"
   }"
https://localhost/tuning/formatsql
Salida
{ 
"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"
}

Ejemplo 2

En este ejemplo se utiliza cURL para pasar una sentencia SQL a la API formatsql con showAnnotation establecido en "false". Sin embargo, existe un error ya que la tabla user_ID.NATION no está definida.

Entrada
curl
--insecure
-X POST
-H "Content-Type: application/json; charset=UTF-8"
--data "{
   dbType:ZOS,
   dbHost:host,
   dbPort:port_number,
   dbName:subsystem,
   dbUser:user_ID,
   dbPassword:password,
   sql:\"SELECT N_NAME FROM NATION WHERE N_NATIONKEY < 10\",
   showAnnotation:false
   }"
https://localhost/tuning/formatsql
Salida
{ 
"code":8,
"error":"Ha fallado la sentencia EXPLAIN. Se ha devuelto el siguiente error:    SQLCODE: -204, SQLSTATE: 42704. Ha fallado la sentencia SQL. , 
"exception":"com.ibm.datatools.dsoe.explain.zos.exception.ExplainException:
   com.ibm.datatools.dsoe.common.da.exception.OSCSQLException:
   com.ibm.db2.jcc.am.SqlSyntaxErrorException: user_ID.NATION IS
      AN UNDEFINED NAME.
   SQLCODE=-204, SQLSTATE=42704, DRIVER=3.67.24..."
}

Comentarios