Это не передает переменную в предложение IN ().Это прямая конкатенация строк, уязвимая для инъекций, поэтому будьте очень осторожны в том, как вы ее используете.
Но проблема здесь:
SET @sql = 'Select AllPosiable.UserID, AllPosiable.AgentSysID, 0' +
'From (' +
В пробеле нет пробеловстрока после 0
в конце первой строки, без пробела перед словом From
в начале второй строки, и разрыв строки между ними не является частью результирующей строки ,Вы получите следующее:
Select AllPosiable.UserID, AllPosiable.AgentSysID, 0From (...
Попробуйте:
SET @sql = 'Select AllPosiable.UserID, AllPosiable.AgentSysID, 0' +
' From (' +
и убедитесь, что вы делаете что-то похожее на каждом разрыве строки.
Кроме того, вынужно посмотреть на этот отрывок:
'AND AgentName NOT LIKE %Texas State Low Cost%' +
Выражение %Texas State Low Cost%
не будет частью строкового литерала в результирующем коде SQL.Вам нужно сделать это:
'AND AgentName NOT LIKE ''%Texas State Low Cost%''' +
и, опять же, убедиться, что все строковые литералы в операторе SQL обрабатываются одинаково.