A statement which holds a bind variable is not executed straight away: the product asks for the values first, in a window listing the variables it found, each with its data type and a value to fill in. Executing continues with what was filled in. ## Why a Bind Variable The same statement is run over and over with another value - another project, another period, another division. Writing that value into the text means editing the statement each time and, worse, keeping several nearly-equal statements around. A bind variable keeps one statement and asks for the value. It is also what makes a statement safe to build from something a user typed: a value which arrives as a bind variable is a value, whatever characters it holds, where a value pasted into the text is part of the statement. ## What the Window Shows One row per variable found, with the name as written in the statement, the data type of the value and the value itself. The statement is shown with it, so it is clear which variable belongs where. Moving to another variable, with the arrow keys in the value or with a click in the list, selects its whole value, so that typing or pasting replaces it. The recognition is a reading of the text, and a text which looks like a variable but is not - a colon inside a literal, a platform which uses the same character for something else - is offered as a variable too. Cancelling the window does not cancel the execution: the statement then runs with those pieces taken as literal text, which is what the reader intended. ## In a Script A statement in [[Invantive Script/Invantive Script|Invantive Script]] takes its values from the variables of the run instead of from a window, which is what makes the same statement runnable unattended in [[Invantive Data Hub/Invantive Data Hub|Invantive Data Hub]]. The variables available there are listed under [[Invantive Script/Pre-defined Variables|Pre-defined Variables]], and a value is handed over on the command line; see [[Invantive Query Tool/Command Line Options|Command Line Options]]. A statement which is going to be scheduled is therefore better written with bind variables from the start: it is then the same statement in the editor and in the scheduler, with only the source of the values differing.