exec
On this page
Endpoint URL
/api/v2/exec
HTTP Method
POST
Description
Executes a SQL statement without returning result sets; typically used for executing DDL and DML statements for which result sets are not expected, such as CREATE TABLE
and INSERT
statements.
Request Headers
Header |
Description |
---|---|
Authorization |
Specifies the authentication information of the user agent. |
Content-Type |
Represents the media type (MIME) of the body of the request and must be set to |
Request Body
The request body is a JSON object that specifies the SQL statement to execute and the statement context.
Field |
Type |
Description |
---|---|---|
sql |
String |
The SQL statement to execute. |
args |
Array |
(Optional) A list of arguments to be used in the SQL statement.
|
args[x] |
Any |
(Optional) An argument to be used in the command. |
database |
String |
(Optional) The database on which the SQL statement must be executed. |
Response
For successful requests, the response will be a JSON object in the message body along with the HTTP status code 200 OK.
Field |
Type |
Description |
---|---|---|
lastInsertId |
Integer |
The last value inserted into an |
rowsAffected |
Integer |
The number of rows affected by the SQL statement. |
On request failure, an HTTP status code corresponding to the error will be returned.
Examples (Shell)
Create a database
Request Data
{"sql": "CREATE DATABASE publications"}
HTTP Request
curl -H "Content-Type: application/json" --data '{"sql": "CREATE DATABASE publications"}' https://root:password@localhost:8080/api/v2/exec
HTTP Response
{"lastInsertId": 0,"rowsAffected": 1}
Create a table
Request Data
{"sql": "CREATE TABLE authors(author_id INT AUTO_INCREMENT PRIMARY KEY, author_name VARCHAR(50) NOT NULL, bio VARCHAR(255))", "database": "publications"}
HTTP Request
curl -H "Content-Type: application/json" --data '{"sql": "CREATE TABLE authors(author_id INT AUTO_INCREMENT PRIMARY KEY, author_name VARCHAR(50) NOT NULL, bio VARCHAR(255))", "database": "publications"}' https://root:password@localhost:8080/api/v2/exec
HTTP Response
{"lastInsertId": 0,"rowsAffected": 0}
Insert values into a table
Request Data
{"sql": "INSERT INTO authors (author_name) VALUES (?), (?), (?)", "args": ["Kegan Roslyn", "Toby Lynsey", "Lacey Desmond"], "database": "publications"}
HTTP Request
curl -H "Content-Type: application/json" --data '{"sql": "INSERT INTO authors (author_name) VALUES (?), (?), (?)", "args": ["Kegan Roslyn", "Toby Lynsey", "Lacey Desmond"], "database": "publications"}' https://root:password@localhost:8080/api/v2/exec
HTTP Response
{"lastInsertId": 1,"rowsAffected": 3}
Call a stored procedure
Request Data
{"sql": "CALL sample_procedure(?)", "args": ["Crime Thriller"], "database": "publications"}
HTTP Request
curl -H "Content-Type: application/json" --data '{"sql": "CALL sample_procedure(?)", "args": ["Crime Thriller"], "database": "publications"}' https://root:password@localhost:8080/api/v2/exec
HTTP Response
{"lastInsertId": 0,"rowsAffected": 0}
Set an engine variable
Request Data
{"sql": "SET GLOBAL data_conversion_compatibility_level = '8.0'"}
HTTP Request
curl -H "Content-Type: application/json" --data '{"sql": "SET GLOBAL data_conversion_compatibility_level = '\''8.0'\''"}' https://root:pa55w0rd@localhost:8080/api/v2/exec
HTTP Response
{"lastInsertId": 0,"rowsAffected": 0}
Supplementary Reference
When using cURL to invoke SingleStore’s Data API, you can issue the JSON payload of the HTTP POST request from a file instead of providing it directly in the request, as shown below.
Create a table by issuing HTTP POST request’s JSON payload from a file
Request data saved in a JSON file
{"sql": "CREATE TABLE reviews(book_title VARCHAR(255) NOT NULL, author_name VARCHAR(50), review JSON NOT NULL)","database": "publications"}
HTTP request with the JSON payload issued from the JSON file
#/* The JSON payload for the HTTP request is supplied from the exec.jsonfilecurl -H "Content-Type: application/json" --data '@./exec.json' https://root:password@localhost:8080/api/v2/exec
HTTP response
{"lastInsertId": 0,"rowsAffected": 0}
Last modified: August 8, 2023