存储过程 returns 标量值时查找 activity 结果的表达式
Expression for Lookup activity result when stored procedure returns scalar value
我正在使用 activity 的查找 return 是一个标量结果,我想使用该结果通过连接表达式构建动态查询。但是,我收到一条错误消息,抱怨我的 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;')
我希望 return 这样的查询:
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;
我看到一些示例,其中查找 return 多列,正确的表达式是 activity('LookupUnfinishedAlarms').output.firstRow.myColumnName
但是当查找 activity return 一个标量值时呢? ,就像我的情况一样?
到目前为止,这是完整的错误:
You have an error in your SQL syntax; check the manual that
corresponds to your MariaDB server version for the right syntax to use
near
'\"output\":\"2329390,2340616,2342078,2345857,2361240,2362088,2362574,2377062,237859'
at line
6,Source=Microsoft.DataTransfer.Runtime.GenericOdbcConnectors,''Type=System.Data.Odbc.OdbcException,Message=ERROR
[42000] [Microsoft][MariaDB] You have an error in your SQL syntax;
check the manual that corresponds to your MariaDB server version for
the right syntax to use near
'\"output\":\"2329390,2340616,2342078,2345857,2361240,2362088,2362574,2377062,237859'
at line 6,Source=MariaDBODBC_sb64.dll
好的,仅供记录,我找到了解决方案。表达式必须是:
@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
我正在使用 activity 的查找 return 是一个标量结果,我想使用该结果通过连接表达式构建动态查询。但是,我收到一条错误消息,抱怨我的 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;')
我希望 return 这样的查询:
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;
我看到一些示例,其中查找 return 多列,正确的表达式是 activity('LookupUnfinishedAlarms').output.firstRow.myColumnName
但是当查找 activity return 一个标量值时呢? ,就像我的情况一样?
到目前为止,这是完整的错误:
You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '\"output\":\"2329390,2340616,2342078,2345857,2361240,2362088,2362574,2377062,237859' at line 6,Source=Microsoft.DataTransfer.Runtime.GenericOdbcConnectors,''Type=System.Data.Odbc.OdbcException,Message=ERROR [42000] [Microsoft][MariaDB] You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '\"output\":\"2329390,2340616,2342078,2345857,2361240,2362088,2362574,2377062,237859' at line 6,Source=MariaDBODBC_sb64.dll
好的,仅供记录,我找到了解决方案。表达式必须是:
@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