Vous devez capturer l'instruction SQL via le client IBM® Data Studio avant d'appeler cette API.
Transmettez à l'API les paires de clés et de valeurs suivantes en utilisant l'URL : https://localhost/tuning/formatsql
| Clé | Valeur | Valeurs admises | Valeur par défaut |
|---|---|---|---|
| dbType | Type de serveur de données. | ZOS | |
| dbHost | Hôte du serveur de données. | Nom du domaine ou adresse IP. | |
| dbPort | Numéro de port du serveur de données. | ||
| dbName | Nom du serveur de données. | ||
| dbUser | ID à utiliser lors de la connexion au serveur de données. | ||
| dbPassword | Mot de passe à utiliser lors d'une connexion au serveur de données. | ||
| sql | Texte de l'instruction SQL. | ||
| showAnnotation | Détermine si l'instruction SQL doit être annotée avec des statistiques. Si vous incluez ce paramètre, l'API explique l'instruction SQL avant de renvoyer l'instruction mise en forme et annotée. | false, true | true |
| schema | Schéma du processus EXPLAIN à utiliser pour les objets non habilités dans l'instruction SQL. Cette valeur remplace la valeur définie dans le fichier tuning_service.properties. | ||
| sqlid | Définit la valeur du registre spécial CURRENT SQLID. | Si vous n'indiquez pas de valeur, le service d'optimisation utilise l'ID d'autorisation spécifié pour la connexion au sous-système. |
L'API renvoie les paires de clés et de valeurs suivantes :
| Clé | Valeur |
|---|---|
| code | Code retour de l'API Web.
|
| output | Elément SQL mis en forme, avec ou sans annotations. |
| message | Messages d'erreur ou d'avertissement. |
| exception | Informations sur l'exception, le cas échéant. Ces informations peuvent être utiles au service de support IBM si vous le contactez pour résoudre un problème. |
Cet exemple utilise cURL pour transmettre une instruction SQL à l'API formatsql, qui renvoie l'instruction mise en forme et annotée avec des statistiques.
curl
--insecure
-X POST
-H "Content-Type: application/json; charset=UTF-8"
--data "{
dbType:ZOS,
dbHost:hôte,
dbPort:numéro_port,
dbName:sous-système,
dbUser:ID_utilisateur,
dbPassword:mot_de_passe,
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"
}
Cet exemple utilise cURL pour transmettre une instruction SQL à l'API formatsql en associant le paramètre showAnnotation à la valeur "false". Toutefois, une erreur se produit car la table ID_utilisateur.NATION n'est pas définie.
curl
--insecure
-X POST
-H "Content-Type: application/json; charset=UTF-8"
--data "{
dbType:ZOS,
dbHost:hôte,
dbPort:numéro_port,
dbName:sous-système,
dbUser:ID_utilisateur,
dbPassword:mot_de_passe,
sql:\"SELECT N_NAME FROM NATION WHERE N_NATIONKEY < 10\",
showAnnotation:false
}"
https://localhost/tuning/formatsql
{
"code":8,
"error":"The EXPLAIN statement failed. The following error was returned:
SQLCODE: -204, SQLSTATE: 42704.The SQL statement failed.",
"exception":"com.ibm.datatools.dsoe.explain.zos.exception.ExplainException:
com.ibm.datatools.dsoe.common.da.exception.OSCSQLException:
com.ibm.db2.jcc.am.SqlSyntaxErrorException: ID_utilisateur.NATION IS
AN UNDEFINED NAME.
SQLCODE=-204, SQLSTATE=42704, DRIVER=3.67.24..."
}