Выражение для результата поиска, когда хранимая процедура возвращает скалярное значение - PullRequest
0 голосов
/ 06 июня 2019

Я использую операцию Lookup, которая возвращает скалярный результат, и я хочу использовать этот результат для построения динамического запроса с использованием выражения concat.Тем не менее, я получаю сообщение об ошибке, что мой SQL-запрос плохо отформатирован.Вот как я строю запрос:

@concat('SELECT v.CscadaEventId as EventId, 
v.EndDate as EndDateUtc 
FROM v_cscadaevents v 
INNER JOIN cscadaevents e
ON e.cscadaeventId = v.CscadaEventId 
WHERE v.CscadaEventId IN(', activity('LookupUnfinishedAlarms').output.firstRow, ') AND e.EndDate IS NOT NULL;')

Я ожидаю, что для возврата запроса, как этот:

SELECT v.CscadaEventId as EventId, 
v.EndDate as EndDateUtc 
FROM v_cscadaevents v 
INNER JOIN cscadaevents e
ON e.cscadaeventId = v.CscadaEventId WHERE v.CscadaEventId IN(2329390,2340616,2342078,2345857,2361240,2362088,2362574,2377062,2378594,2379357) AND e.EndDate IS NOT NULL;

Я видел несколько примеров, когда поиск возвращает несколько столбцов,и правильное выражение - activity('LookupUnfinishedAlarms').output.firstRow.myColumnName, но как насчет того, когда операция поиска возвращает скалярное значение, как в моем случае?

Пока это полная ошибка:

У вас естьошибка в вашем синтаксисе SQL;проверьте руководство, соответствующее вашей версии сервера MariaDB, на предмет правильного синтаксиса для использования рядом с '\ "output \": \ "2329390,2340616,2342078,2345857,2361240,2362088,2362574,2377062,237859' в строке 6, Source =Microsoft.DataTransfer.Runtime.GenericOdbcConnectors, '' Type = System.Data.Odbc.OdbcException, Message = ERROR [42000] [Microsoft] [MariaDB] У вас есть ошибка в синтаксисе SQL, проверьте руководство, соответствующее вашему серверу MariaDBверсия для правильного синтаксиса для использования рядом с '\ "output \": \ "2329390,2340616,2342078,2345857,2361240,2362088,2362574,2377062,237859' в строке 6, Source = MariaDBODBC_sb64.dll

1 Ответ

0 голосов
/ 06 июня 2019

Хорошо, только для записей я нашел решение. Выражение должно быть:

@concat('SELECT v.CscadaEventId as EventId, 
v.EndDate as EndDateUtc 
FROM v_cscadaevents v 
INNER JOIN cscadaevents e
ON e.cscadaeventId = v.CscadaEventId 
WHERE v.CscadaEventId IN(', activity('LookupUnfinishedAlarms').output.firstRow.output, ') AND e.EndDate IS NOT NULL;')

Итак, столбец по умолчанию становится output

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...