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 Service Gateway Configuration and Data Access Configuration).
Parameter
| Name | Type | Description | 
|---|---|---|
| query | string | The q-sql command to run on a target data access process | 
Response
The response is dependant on the query parameter itself and the result of executing it on the target.
Application Codes
| AC | Description | 
|---|---|
| INPUT | If a non-string is passed in for the query argument | 
| TYPE | A q-sql statement results in a type error. e.g "where id=`a", when id is an int column | 
| LENGTH | A q-sql `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