이 API를 호출하기 전에 IBM® Data Studio 클라이언트를 통해 SQL문을 캡처하지 않아도 됩니다.
이 URL을 사용하여 API에 다음 키 및 값 쌍을 전달하십시오. https://localhost/tuning/formatsql
| 키 | 값 | 가능한 값 | 기본값 |
|---|---|---|---|
| dbType | 데이터 서버 유형 | ZOS | |
| dbHost | 데이터 서버의 호스트입니다. | 도메인 이름 또는 IP 주소 | |
| dbPort | 데이터 서버의 포트 번호 | ||
| dbName | 데이터 서버 이름 | ||
| dbUser | 데이터 서버에 연결할 때 사용할 ID입니다. | ||
| dbPassword | 데이터 서버에 연결할 때 사용할 비밀번호입니다. | ||
| sql | SQL문의 텍스트입니다. | ||
| showAnnotation | 통계를 사용하여 SQL문에 어노테이션을 작성할지 여부를 판별합니다. 이 매개변수를 포함시키는 경우, API는 포맷팅되고 어노테이션이 있는 SQL문을 리턴하기 전에 SQL문을 Explain합니다. | false, true | true |
| schema | SQL문에 규정되지 않은 오브젝트에 사용할 EXPLAIN 프로세스의 스키마입니다. 이 값은 tuning_service.properties 파일에 설정된 값을 겹쳐씁니다. | ||
| sqlid | CURRENT SQLID 특수 레지스터 값을 설정합니다. | 값을 지정하지 않는 경우, 튜닝 서비스는 서브시스템 연결에 대해 지정된 권한 부여 ID를 사용합니다. |
API는 다음 키 및 값 쌍을 리턴합니다.
| 키 | 값 |
|---|---|
| code | 웹 API의 리턴 코드입니다.
|
| output | 어노테이션이 있거나 없는 포맷팅된 SQL문입니다. |
| message | 오류 또는 경고 메시지입니다. |
| exception | 예외가 발생한 경우 예외에 대한 정보입니다. IBM 지원 센터와 작업하여 문제점을 해결하는 경우 이 정보는 IBM 지원 센터에 유용합니다. |
이 예제에서는 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"
}
이 예제에서는 cURL을 사용하여 showAnnotation이 "false"로 설정된 formatsql API에 SQL문을 전달합니다. 그러나 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..."
}