Example 7: Apply a WHERE clause to a Db2 table

In the following example, Z Data Tools Service Provider REST API calls are issued to limit the result table using a Db2® WHERE clause, then read the first row in the result table.

Initial request

An initial API call to read data from a Db2 data resource requires an HTTP Basic Authorization header so that the caller can be authenticated for subsequent access to Db2 data resources. For example:

Authorization : Basic dXNlcmlkOnBhc3N3b3Jk

where the string after the Basic keyword represents a Base64 encoding of userid:password.

All requests with a JSON payload also require a Content-Type header with a value of application/json.

The initial request also requires the name of the Db2 subsystem, the Db2 table owner, the Db2 table name, and optionally a ZDT/Db2 template to map the data. If you don’t specify a template, the service provider will build a dynamic template and return all table columns and rows.

A WHERE clause is only valid on an initial API request that starts the Db2 session and builds the result table for the session.

{
    "resource" :
    {
        "ssid" : "DFG2",
        "owner" : "DSN81010",
        "tableName" : "EMP"
    },
    "template" :
    {
        "templateName" : "DB2.TEMPLATE(EMPTMPL)"
    },
    "operation" : 
    {
        "numRows" : 1,
        "session" : false,
        "where" : "WORKDEPT = 'B01'"
    }
}

This request reads the first row from the beginning of Db2 table EMP, which is owned by DSN81010, in Db2 subsystem DFG2, after applying a WHERE clause of WORKDEPT = 'B01'. The request will use ZDT/Db2 template DB2.TEMPLATE(EMPTMPL) to map out the row columns in the response.

The service provider will not persist a ZDT/Db2 session because session is set to false.

Successful response

A successful response (HTTP Status Code 200) will be similar to the following:

{
    "rows":
    [
        {
            "columns": 
            [
                {
                    "column": "EMPNO",
                    "type": "CH(6)",
                    "value": "000020"
                },
                {
                    "column": "FIRSTNME",
                    "type": "VC(12)",
                    "value": "MICHAEL"
                },
                {
                    "column": "LASTNAME",
                    "type": "VC(15)",
                    "value": "THOMPSON"
                },
                {
                    "column": "WORKDEPT",
                    "type": "CH(3)",
                    "value": "B01"
                },
                {
                    "column": "JOB",
                    "type": "CH(8)",
                    "value": "Manager"
                },
                {
                    "column": "SALARY",
                    "type": "DEC(9,2)",
                    "value": 41250
                }
            ]
        }
    ] 
}

The caller does not need to issue a second request to terminate the ZDT/Db2 session because no session was maintained by the service provider.