No es necesario capturar la sentencia SQL mediante el cliente de IBM® Data Studio antes de invocar esta API.
Pase los siguientes pares de claves y valores a la API mediante este URL: https://localhost/tuning/formatsql
| 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. |
La API devuelve los siguientes pares de claves y valores:
| Clave | Valor |
|---|---|
| code | El código de retorno de la API web.
|
| 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. |
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.
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
{
"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"
}
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.
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
{
"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..."
}