Inserts values from a single row from an SQL query.
Purpose
Inserts values from a single row from an SQL query. Every column must have a name. The query is executed via a Database Connection. Note that the column names are automatically stored as variables so a [String:] macro, for example, is actually required to view the value(s) returned.
Compatibility
The macro can be used in all input document types and in Report Studio.
Usage
Queries that contains the following commands (case-insensitive) are execute-restricted - in this case ask your Tenant Admin to make the Schedule admin-locked, and ensure an Admin has made the Connection accessible to you. The restricted commands are: ADD, ALTER, APPEND, BACKUP, CREATE, DELETE, DROP, EXEC, INSERT, TRUNCATE, and UPDATE.
Updates
Added 'mode' parameter. In Normal Mode values are stored with their native type (int, bool, decimal, DateTime, etc.) rather than always as strings.
Mandatory (1)
| Parameter | Type | Purpose | Options | Default |
| String | The SQL to execute - must return a single row. Queries that contains the following commands (case-insensitive) are execute-restricted - in this case ask your Tenant Admin to make the Schedule admin-locked, and ensure an Admin has made the Connection accessible to you. The restricted commands are: ADD, ALTER, APPEND, BACKUP, CREATE, DELETE, DROP, EXEC, INSERT, TRUNCATE, and UPDATE. | N/A | N/A |
Behaviour (6)8 additional
| Parameter | Type | Presence | Purpose | Options | Default |
| Boolean | Optional | When true, all values are always stored as strings even in Normal Mode. |
|
false | |
| Int32 | Optional | The maximum number of attempts when requesting data. |
|
1 | |
| Int32 | Optional | The maximum total time in milliseconds across all attempts. If not set, no total time cap is applied. The maximum value is 86400000 (1 day). |
|
N/A | |
| Boolean | Optional | Whether to remove newline characters in the SQL before sending. |
|
false | |
| Double | Optional | The number of seconds to wait between retry attempts. The maximum value is 3600 (1 hour). |
|
1 | |
| Int32 | Optional | The timeout in milliseconds. Overrides the Connection's 'timeoutMs' parameter, if set. | N/A | N/A |
Additional (8)
| Parameter | Type | Presence | Purpose | Options | Default |
| List<ExecutionResult> | Optional | If specified, asserts the expected execution result of the macro. Accepts a single value or a semicolon-separated list of acceptable values (e.g. 'Success;Warning'). The macro executes normally; if the actual result matches any of the desired values, the result is converted to Success. If the actual result does not match, the result is converted to MacroError with a descriptive message. This is primarily used for testing and diagnostic purposes. Valid values are: 'Unknown', 'Success', 'MacroError', 'WorkerStopped', 'Running', 'Warning', 'NeverRun', 'Cancelled', 'Pending', 'Paused', 'SystemError', 'Deferred' and 'Stopped'. |
|
N/A | |
| Boolean | Optional | Should NCalc expression evaluation throw error on Overflow |
|
true | |
| String | Optional | If specified, asserts the expected output type of the macro result. The macro executes normally; if the actual type does not match, a macro error is generated. Requires 'storeAs', 'storeAsHidden', or 'storeFormattedValueAs' to be set for typed validation. Valid types include CLR names (e.g. Int32, Int64, Single, Double, Boolean, String, JArray, JObject) and C# keyword aliases (e.g. int, long, float, double, bool, string, uint, ulong, short, ushort, byte, sbyte, decimal, char, object). The special value 'Number' matches any numeric type. | N/A | N/A | |
| String | Optional | If specified, asserts the expected output value of the macro result. The macro executes normally; if the actual value does not match, a macro error is generated. When 'storeAs' or 'storeAsHidden' is set, the stored variable value is compared. Otherwise, the document output text is compared. | N/A | N/A | |
| String | Optional | The condition that must be true in order for the macro to be executed/evaluated. Must either evaluate to true or false, for example: "3+5=8" or "contains('abcd', 'z'). | N/A | true | |
| MacroMode | Optional | The mode in which values are stored. In Normal Mode, values are stored with their native type (int, bool, decimal, etc.). In Legacy Mode (default), values are always stored as strings. |
|
Legacy | |
| ObfuscationType | Optional | Obfuscation type. Use obfuscation to write reports where sensitive data is hidden. When used, ReportMagic guarantees that the same input string will map to the same output string for the whole of the report (but the next time the report runs, it will most likely map to a different value). If you use obfuscation, the property in your macro will not show up and instead, you will see a fake item of the obfuscation type chosen. |
|
None | |
| String | Optional | If specified, adds a warning message for this macro. This is processed as an NCalc, and the warning message will ALWAYS be present and will be the value of the evaluated NCalc expression. | N/A | N/A |
Filtering & Sorting (1)
| Parameter | Type | Presence | Purpose | Options | Default |
| String | Mandatory | The SQL to execute - must return a single row. Queries that contains the following commands (case-insensitive) are execute-restricted - in this case ask your Tenant Admin to make the Schedule admin-locked, and ensure an Admin has made the Connection accessible to you. The restricted commands are: ADD, ALTER, APPEND, BACKUP, CREATE, DELETE, DROP, EXEC, INSERT, TRUNCATE, and UPDATE. | N/A | N/A |
Output (2)
| Parameter | Type | Presence | Purpose | Options | Default |
| String | Optional | The text to display should the macro fail to execute. Note that a poorly-specified macro (e.g. omitting mandatory parameters) will still result in an error message. | N/A | N/A | |
| String | Optional | The name of a variable to create should the macro fail to execute. The variable will be a text variable, and will contain either the failure text (only if the failureText parameter is set), otherwise it will contain the exception / failure message. | N/A | N/A |
General (1)2 additional
| Parameter | Type | Presence | Purpose | Options | Default |
| String | Optional | Value to use if null is returned from the SQL. | N/A | N/A |
Examples (2)
Example 1
This example selects several columns from a database table:
[Database.Values: sql="SELECT top 1 Id, Name, Age FROM People", timeoutMs=30000]
Id [String: value={Id}], Name [String: value={Name}], Age [String: value={Age}].Example 2Normal mode
Normal Mode: values are stored with their native type (int, bool, etc.) rather than as strings:
[Database.Values: sql="SELECT top 1 Id, IsActive, Score FROM People", mode=Normal]Id: [String: value={Id}], Active: [String: value={IsActive}], Score: [String: value={Score}]