MSCEWI4006
The selection of the variable may have runtime errors.
Low
This warning is added when a transformation is being applied fo a SELECT @local_variable, and the assigned expression is referencing other local variables.
DECLARE @VAR1 int;
select @VAR1 = col1 + @VAR1 + col2 from table1;
var EXEC = (stmt,binds = [],noCatch = false,catchFunction = null) => {
// Some implementation here.
};
var INTO = function (args) {
var result = [];
if (ROW_COUNT && (args instanceof Array && args.length == _ROWS.getColumnCount())) {
result = Array.apply(null,Array(_ROWS.getColumnCount()))
while ( _ROWS.next() ) {
result = result.map((currentValue,i) => args[i](currentValue,_ROWS.getColumnValue(i + 1)))
}
}
return result;
};
let VAR1;
// ** MSC-WARNING - MSCEWI4006 - SELECTION OF @VAR1 MAY HAVE RUNTIME ERRORS **
EXEC(`SELECT col1 + ? + col2, from PUBLIC.table1`,[VAR1]);
var VAR1_OPERATION = (currentValue,nextValue) => nextValue;
[VAR1] = INTO([VAR1_OPERATION]);
DECLARE @VAR1 int;
DECLARE @VAR2 int;
select @VAR1 = col1 + col2, @VAR2 = @VAR1 + col3 from table1;Output Code
var EXEC = (stmt,binds = [],noCatch = false,catchFunction = null) => {
// Some implementation here.
};
var INTO = function (args) {
var result = [];
if (ROW_COUNT && (args instanceof Array && args.length == _ROWS.getColumnCount())) {
result = Array.apply(null,Array(_ROWS.getColumnCount()))
while ( _ROWS.next() ) {
result = result.map((currentValue,i) => args[i](currentValue,_ROWS.getColumnValue(i + 1)))
}
}
return result;
};
let VAR1;
let VAR2;
// ** MSC-WARNING - MSCEWI4006 - SELECTION OF @VAR1 MAY HAVE RUNTIME ERRORS **
EXEC(`SELECT col1 + col2, ? + col3 from PUBLIC.table1`,[VAR1]);
var VAR1_OPERATION = (currentValue,nextValue) => nextValue;
var VAR2_OPERATION = (currentValue,nextValue) => nextValue;
[VAR1,VAR2] = INTO([VAR1_OPERATION,VAR2_OPERATION]);
- For example 1, notice that you are using an implicit
+=
operator, by adding the current variable value in each iteration. In the output code you should do only two changes:- Remove the question mark and the bindings from the
EXEC
call. - Modify the
VAR1_OPERATION
function, in order to sum all the values in each iteration when it is called. For example:
var VAR1_OPERATION = (currentValue,nextValue) => currentValue ? currentValue + nextValue : nextValue;
- For example 2, notice that you are referencing
@VAR1
from the same statement inVAR2
. In this case, you can simply replace the@VAR1
reference with its expression assignment, in this casecol1 + col2
- For more support, you can email us at [email protected] or post a message to our forums. If you have a contract for support with Mobilize.Net, reach out to your sales engineer and they can direct your support needs.
Last modified 1yr ago