Answer
Check whether the substitution variable is wrapped in single quotes in the event's actual condition/SQL — a string-type substitution variable like &NEW:NCR_NO needs to be quoted (as '&NEW:NCR_NO') the way you would quote any string literal in SQL; leaving it unquoted can work in some simpler evaluation paths but fail with an invalid-number error once the event's logic hits a comparison or join that forces an implicit (and in this case invalid) numeric conversion. Testing the exact statement directly in a SQL tool doesn't catch this, since you'd naturally type the value already quoted there — the substitution-variable version inside the event needs that same quoting explicitly added.