Skip to content

QSQL

This API is intended to run on a data access process and execute the command sent in from the client.

Note that, by default, this API is only enabled in sandboxes. To enable it in non-sandboxes, set the KXI_ALLOWED_SBX_APIS in the RCs and DAPs in which you want to enable it (see Database configuration).

Parameter

Name Type Description
query string The qSQL command to run on a target data access process

Response

The response is dependent on the query parameter itself and the result of executing it on the target.

For issues with the query or responses checkout the troubleshooting section here.

Application Codes

AC Description
INPUT If a non-string is passed in for the query argument
TYPE A qSQL statement results in a type error. e.g "where id=`a", when id is an int column
LENGTH A qSQL length error. e.g "where id=1 2", when column doesn't have a count of 2

Examples

For these examples assume the table t was created in a target process with

t:([]id:til 10)

and that a callback function cb is set to {res::(x;y)} which saves the response header and payload to a global

In this example we do a simple select from the target table t for the id of 4. Response and application codes are both OK.

q)res:neg[h](`.kxi.qsql; enlist[`query]!enlist"select from t where id=4";`cb;()!())
q)res 0
rc| 0
ac| 0

q)res 1

id
--
4

Here we run a badly formatted query with a where clause that checks equality between a long column and a character resulting in a type error. Response payload is null and has a header with an RC of APP_DB and an AC of TYPE.

q)res:neg[h](`.kxi.qsql; enlist[`query]!enlist"select from t where id=`a";`cb;()!())
q)res 0
rc| 6
ac| 11

q)(::)~res 1
1b