The "getRecordsByTable" action is the most efficient way to retrieve all records from a table and can also retrieve records from the beginning of a table. When a table contains too many records to retrieve all at once, use a cursor, which makes it easy, fast, and efficient to paginate results. See Most effective ways to return data from the JSON DB API. Returning a cursor and returning records directly are mutually exclusive operations.
- The
"getRecordsByTable"action can always read records forwards starting from the beginning of a table. -
"getRecordsByTable"can read records backward starting from the end of a table but only when the table contains fixed-length records.- A record is fixed length only when all its fields are fixed length. In other words, a table contains variable-length records when it has one or more fields with the following data types:
"varchar","lvarchar","varbinary","lvarbinary", and"json". - If you need to fetch records backward, create a cursor based on an index, such as
"getRecordsByIndex","getRecordsByPartialKeyRange","getRecordsInKeyRange", and"getRecordsStartingAtKey".
- A record is fixed length only when all its fields are fixed length. In other words, a table contains variable-length records when it has one or more fields with the following data types:
- Skipping records is fast, but slows down linearly as the number of skipped records increases because skipping walks through each record in the table.
- An optional
"tableFilter"can be applied to each record to further filter the results.- A
"tableFilter"is a table filter expression, that contains comparisons to fields in the record, such as"salary > 90000".
- A
- The
"getRecordsByTable"action returns records in table order, which is typically the order records are inserted, but this is not always the case.- Records may be inserted in the middle of a table to reuse space freed by deleted records; in addition, updated records that require more space are moved to the end of a table.
- To always get records in insert order, use the
"getRecordsByIndex"action with the ID index, which can walk records in insert order forwards and backwards.
Note Returning a cursor and returning records are mutually exclusive operations.
- When using the
"getRecordsByTable"action on a table containing variable-length records, you must set"skipRecords"to a positive integer number, and set"reverseOrder"tofalse. - When using a cursor returned by the
"getRecordsByTable"action, you must set"skipRecords"and"fetchRecords"to positive integer numbers. - You can only set the
"startFrom"property to"beforeFirstRecord"and"currentPosition". - To start walking the data again from the beginning, at any time you can set
"startFrom"to"beforeFirstRecord".
Request examples
Minimal
{
"action": "getRecordsByTable",
"params": {
"tableName": "athlete"
},
"authToken": "replaceWithAuthTokenFromCreateSession"
}Cursor
{
"api": "db",
"requestId": "2",
"action": "getRecordsByTable",
"params": {
"tableName": "athlete",
"tableFilter": "ranking <= 3",
"returnCursor": true
},
"authToken": "replaceWithAuthTokenFromCreateSession"
}Maximal
{
"api": "db",
"apiVersion": "1.0",
"requestId": "3",
"action": "getRecordsByTable",
"params": {
"databaseName": "ctreeSQL",
"ownerName": "admin",
"tableName": "athlete",
"tableFilter": "ranking <= 3",
"fixedLengthCharFormat": "sql",
"returnCursor": false,
"reverseOrder": false,
"skipRecords": 0,
"maxRecords": 20,
"id": 2084,
"bookmark": “000000FF”
},
"responseOptions": {
"includeBookmarks": false,
"binaryFormat": "hex",
"dataFormat": "objects",
"numberFormat": "string",
"variantFormat": "variantObject",
"includeFields": [
"name",
"ranking"
],
"excludeFields": []
},
"debug": "max",
"authToken": "replaceWithAuthTokenFromCreateSession"
}
Response examples
Minimal
{
"result": {
"dataFormat": "objects",
"binaryFormat": "hex",
"fields": [
{
"name": "id",
"type": "bigint",
"length": null,
"scale": null,
"defaultValue": null,
"nullable": false,
"primaryKey": 1,
"autoValue": "incrementOnInsert"
},
{
"name": "changeId",
"type": "bigint",
"length": null,
"scale": null,
"defaultValue": null,
"nullable": true,
"primaryKey": 0,
"autoValue": "changeId"
},
{
"name": "name",
"type": "varchar",
"length": 30,
"scale": null,
"defaultValue": null,
"nullable": true,
"primaryKey": 0,
"autoValue": "none"
},
{
"name": "ranking",
"type": "smallint",
"length": null,
"scale": null,
"defaultValue": null,
"nullable": false,
"primaryKey": 0,
"autoValue": "none"
},
{
"name": "birthDate",
"type": "date",
"length": null,
"scale": null,
"defaultValue": null,
"nullable": true,
"primaryKey": 0,
"autoValue": "none"
},
{
"name": "playerNumber",
"type": "number",
"length": 32,
"scale": 6,
"defaultValue": null,
"nullable": true,
"primaryKey": 0,
"autoValue": "none"
},
{
"name": "livedPast2000",
"type": "bit",
"length": null,
"scale": null,
"defaultValue": null,
"nullable": true,
"primaryKey": 0,
"autoValue": "none"
},
{
"name": "earnings",
"type": "money",
"length": 32,
"scale": 4,
"defaultValue": null,
"nullable": true,
"primaryKey": 0,
"autoValue": "none"
},
{
"name": "favoriteSaying",
"type": "varchar",
"length": 500,
"scale": null,
"defaultValue": null,
"nullable": true,
"primaryKey": 0,
"autoValue": "none"
}
],
"data": [
{
"birthDate": "1963-02-17",
"changeId": 1291366,
"earnings": 1700000000,
"favoriteSaying": "There is no 'i' in team but there is in win.",
"id": 1,
"livedPast2000": true,
"name": "Michael Jordan",
"playerNumber": 23,
"ranking": 1
},
{
"birthDate": "1942-01-17",
"changeId": 1291366,
"earnings": 60000000,
"favoriteSaying": "Float like a butterfly, sting like a bee.",
"id": 3,
"livedPast2000": true,
"name": "Muhammad Ali",
"playerNumber": 1,
"ranking": 3
},
{
"birthDate": "1895-02-06",
"changeId": 1291366,
"earnings": 800000,
"favoriteSaying": "Every strike brings me closer to the next home run.",
"id": 2,
"livedPast2000": false,
"name": "Babe Ruth",
"playerNumber": 3,
"ranking": 2
},
{
"birthDate": "1940-10-23",
"changeId": 1291366,
"earnings": 115000000,
"favoriteSaying": "Everything is practice.",
"id": 4,
"livedPast2000": true,
"name": "Pele",
"playerNumber": 10,
"ranking": 4
},
{
"birthDate": "1961-01-26",
"changeId": 1291366,
"earnings": 1720000,
"favoriteSaying": "You miss 100 percent of the shots you never take.",
"id": 5,
"livedPast2000": true,
"name": "Wayne Gretzky",
"playerNumber": 99,
"ranking": 5
},
{
"birthDate": "1969-01-03",
"changeId": 1291366,
"earnings": 990000000,
"favoriteSaying": "Once something is a passion, the motivation is there.",
"id": 6,
"livedPast2000": true,
"name": "Michael Schumacher",
"playerNumber": 1,
"ranking": 6
}
],
"primaryKeyFields": [
"id"
],
"changeIdField": "changeId",
"moreRecords": false,
"requestedRecordCount": 20,
"returnedRecordCount": 6,
"totalRecordCount": 6
},
"debugInfo": {
"request": {
"action": "getRecordsByTable",
"params": {
"tableName": "athlete"
},
"debug": "max",
"authToken": "replaceWithAuthTokenFromCreateSession"
},
"serverSuppliedValues": {
"databaseName": "ctreeSQL",
"ownerName": "admin"
},
"errorData": {
"errorData": null
},
"warnings": []
},
"errorCode": 0,
"errorMessage": "",
"authToken": "replaceWithAuthTokenFromCreateSession"
}Cursor
{
"result": {
"cursorId": "cursorId",
"totalRecordCount": -1
},
"requestId": "2",
"debugInfo": {
"request": {
"api": "db",
"action": "getRecordsByTable",
"params": {
"tableName": "athlete",
"tableFilter": "ranking <= 3",
"returnCursor": true
},
"requestId": "2",
"debug": "max",
"authToken": "replaceWithAuthTokenFromCreateSession"
},
"serverSuppliedValues": {
"databaseName": "ctreeSQL",
"ownerName": "admin"
},
"errorData": {
"errorData": null
},
"warnings": []
},
"errorCode": 0,
"errorMessage": "",
"authToken": "replaceWithAuthTokenFromCreateSession"
}Maximal
{
"result": {
"dataFormat": "objects",
"binaryFormat": "hex",
"fields": [
{
"name": "name",
"type": "varchar",
"length": 30,
"scale": null,
"defaultValue": null,
"nullable": true,
"primaryKey": 0,
"autoValue": "none"
},
{
"name": "ranking",
"type": "smallint",
"length": null,
"scale": null,
"defaultValue": null,
"nullable": false,
"primaryKey": 0,
"autoValue": "none"
}
],
"data": [
{
"name": "Michael Jordan",
"ranking": "1"
},
{
"name": "Muhammad Ali",
"ranking": "3"
},
{
"name": "Babe Ruth",
"ranking": "2"
}
],
"primaryKeyFields": [
"id"
],
"changeIdField": "changeId",
"moreRecords": false,
"requestedRecordCount": 20,
"returnedRecordCount": 3,
"totalRecordCount": 3
},
"requestId": "3",
"debugInfo": {
"request": {
"api": "db",
"action": "getRecordsByTable",
"params": {
"databaseName": "ctreeSQL",
"ownerName": "admin",
"tableName": "athlete",
"tableFilter": "ranking <= 3",
"returnCursor": false,
"reverseOrder": false,
"skipRecords": 0,
"maxRecords": 20
},
"apiVersion": "1.0",
"requestId": "3",
"responseOptions": {
"binaryFormat": "hex",
"dataFormat": "objects",
"numberFormat": "string",
"variantFormat": "variantObject",
"includeFields": [
"name",
"ranking"
],
"excludeFields": []
},
"debug": "max",
"authToken": "replaceWithAuthTokenFromCreateSession"
},
"serverSuppliedValues": {
"databaseName": "ctreeSQL",
"ownerName": "admin"
},
"errorData": {
"errorData": null
},
"warnings": []
},
"errorCode": 0,
"errorMessage": "",
"authToken": "replaceWithAuthTokenFromCreateSession"
}
Properties
Request properties ("params")
| Property | Description | Default | Type | Limits (inclusive) |
|---|---|---|---|---|
bookmarkor _bookmark_ |
The "
The "
Using "bookmark" to position the starting record:
|
Optional with default of ""
|
string | 0 to 2048 bytes |
databaseName |
The You specify this property when you want to use a different database instead of the default. This property is useful because objects, such as tables and code packages, can have the same name in multiple databases. This feature allows you to create multiple environments in the same server and reuse the same JSON actions in each environment. For example, you can create It is an error to set If no default database is specified during |
Defaults to the session's "defaultDatabaseName" property |
string | 1 to 64 bytes |
fixedLengthCharFormat |
The
For more details, see |
Optional with default "sql"
|
string |
|
id |
The
|
Automatically generated by the server | integer |
|
indexName |
The "params": {
"indexName": "index1"
} |
Required - No default value |
string | 1 to 64 bytes |
maxRecords |
The "maxRecords" property specifies the maximum number of records to be returned. It is used with "skipRecords" to paginate the results. If the value is not null or omitted, the server returns the maximum number of results specified by "maxRecords". |
Optional with default of 20 |
integer |
-1 to 65535
|
ownerName |
The You specify this property when you want to use a different account instead of the default. Your session's account must have the appropriate privileges to access the code package. This property is useful because objects, such as tables and code packages, can have the same name in the same database as long as different accounts own each object. This feature allows you to create duplicate objects for different users on the same server and reuse the same JSON actions on those objects. For example, an administrator can copy objects from a production environment to her account so she can troubleshoot an issue using the same JSON actions, JavaScript, and SQL code. It is an error to set If no default owner is specified during |
Optional with default of the session's "defaultOwnerName" property |
string | 1 to 64 bytes |
returnCursor |
The
|
Optional with default of false
|
Boolean |
|
reverseOrder |
The
|
Optional with default of false
|
Boolean |
|
skipRecords |
The "skipRecords" property specifies the number of records to skip over when paginating the results. It is used with "maxRecords" to paginate the results. If the value is not null or omitted, the server returns results from the beginning. If it is > 0, the server skips over the specified number of records and returns results starting from that point up until it returns the maximum number of results as defined by "maxRecords". |
Optional with default of 0
|
integer |
0 to 9223372036854775807
|
tableFilter |
tableFilter |
The
|
Optional with default of ""
|
string |
tableName |
The See table name in System specifications for the table naming requirements and limitations.
"params": {
"tableName": "ctreeTable"
} |
Required - No default value | string | 1 to 64 bytes |
Response properties ("result")
| Property | Description | Type | Limits (inclusive) |
|---|---|---|---|
binaryFormat |
The "binaryFormat" property designates the format of binary values embedded in JSON strings. See binaryFormat for more details. |
string | One of the following: "base64", "hex", or "byteArray". |
changeIdField |
This property's value designates the name of the field used for change-tracking functionality if you are not using the
However, if you use the name |
string | 1 to 64 bytes |
cursorid |
The
|
string | 0 to 255 bytes |
data |
The |
array of objects | The action determines its contents. |
dataFormat |
The
|
string |
|
fields |
The
"fields": [
{
"autoValue": "none",
"name": "name",
"type": "varchar",
"length": 50,
"scale": null,
"defaultValue": null,
"nullable": false
}
] |
array |
updateRecords and deleteRecords only:
|
|
fields .autoValue |
The "autoValue" property indicates when and how the server automatically sets the field value. See autoValue for more details. |
string |
Some actions only:
|
|
fields .defaultValue |
The "defaultValue" property specifies the default value of a field. |
string | 0 to 65,500 bytes |
|
fields .length |
Identifies the length of the field. | integer |
1 to 65500 |
|
fields .name |
The The The
|
string | 1 to 64 bytes |
|
fields .nullable |
"nullable" identifies whether a field can contain a NULL value. |
Boolean |
|
|
fields .primaryKey |
When > 0, the "primaryKey" property identifies the ordinal position of the field within the table's primary key. |
integer |
0 to 32
|
|
fields .scale |
If the type is "number" or "money", the "scale" property identifies the number of places to the right of the decimal point,. |
integer |
0 to 32
|
|
fields .type |
Identifies the type of the field. See Data types. | string |
|
moreRecords |
The "moreRecords" property indicates if there are more records that match the filters in the request. |
Boolean |
|
primaryKeyFields |
This property specifies the fields of the table’s primary key when multiple fields are combined to form the primary key.
The order of fields in this property is the order of fields in the primary key index. The A primary key with multiple fields has an index named If only one field is used as the primary key, the
Example "primaryKeyFields": [
"a",
"b",
"c"
],
"fields": [
{
"name": "a",
"type": "tinyint"
},
{
"name": "b",
"type": "smallint"
},
{
"name": "c",
"type": "integer"
}
] |
array | an array |
requestedRecordCount |
The
|
integer |
|
returnedRecordCount |
The
|
integer |
|
totalRecordCount |
The
|
integer |
|