formatsql: 単一 SQL ステートメントをフォーマットして、そのステートメントにアノテーションを付ける

formatsql API に渡された SQL ステートメントは、 読みやすくなるようにフォーマットされて、その API から返されます。 さらに、formatsql API を使用すれば、ステートメントに統計でアノテーションを付けることもできます。

この API を呼び出す前に IBM® Data Studio クライアントを 使用して SQL ステートメントをキャプチャーする必要はありません。

入力パラメーター

この URL を使用して、以下のキーと値のペアを API に渡します。 https://localhost/tuning/formatsql

表 1. 入力パラメーター
キー 使用可能な値 デフォルト値
dbType データ・サーバーのタイプ。 ZOS  
dbHost データ・サーバーのホスト。 ドメイン・ネームまたは IP アドレス  
dbPort データ・サーバーのポート番号    
dbName データ・サーバーの名前    
dbUser データ・サーバーに接続するときに使用する ID    
dbPassword データ・サーバーに接続するときに使用するパスワード。    
sql SQL ステートメントのテキスト。    
showAnnotation これは、SQL ステートメントに統計のアノテーションを付けるかどうかを決定します。 このパラメーターが組み込まれた場合、API は、フォーマットされてアノテーションが付けられたステートメントを返す 前に SQL ステートメントを EXPLAIN します。 falsetrue true
schema SQL ステートメント内の非修飾オブジェクトに対して使用される EXPLAIN プロセスのスキーマ。 この値は、tuning_service.properties ファイルに設定されている値をオーバーライドします。    
sqlid これは、CURRENT SQLID 特殊レジスターの値を設定します。   この値が指定されない場合、チューニング・サービスでは、サブシステムへの接続用に指定された 許可 ID が使用されます。

出力パラメーター

API は以下のキーと値のペアを返します。

表 2. 出力パラメーター
キー
code web API からの戻りコード。
0
完了 (警告なし)
4
完了 (警告あり)
8
エラーが原因で完了せずに終了
output フォーマット済み SQL ステートメント (アノテーションあり/なし)。
message エラー・メッセージまたは警告メッセージ。
例外 例外に関する情報 (例外が発生した場合)。 この情報は、お客様が IBM サポートと連携して問題解決にあたる場合に IBM サポートの参考になる可能性があります。

例 1

この例では、cURL を使用して formatsql API に SQL ステートメントを渡しています。 この API からは、フォーマットされて統計でアノテーションが付けられたステートメントが返されます。

入力
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" 
}

例 2

この例では、cURL を使用して formatsql API に SQL ステートメントを渡しています。 showAnnotation は false に設定されています。 ただし、表 user_ID.NATION は未定義であるため、エラーが発生します。

入力
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":"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: user_ID.NATION IS 
      AN UNDEFINED NAME.
   SQLCODE=-204, SQLSTATE=42704, DRIVER=3.67.24..." 
}

フィードバック