在 SQL 连接器中使用存储过程?

Using Stored Procedures in the SQL Connector?

业务问题:一天一次,我们想从数据库中读取多行(具有特定条件),遍历这些行并向该行中的电子邮件发送一封电子邮件,然后更新该行说明电子邮件已发送(以防止每天或一天多次向该人发送电子邮件)。

我们所有的数据库、服务器、wep 应用程序等都在使用 windows azure。看到我们有应用服务,我们开始用创建逻辑应用的想法来研究这个问题。

Simple Logic App Flow: Recurrence(once a day) => SqlConnector(StoredProcedure or select statement) => Foreach row (emailapi(row.email) => SqlConnector(Update row))

并发症:

逻辑应用需要从我们的一个 sql 数据库中读取数据。所以我们通过创建一个 sql 连接器来解决这个问题,我们可以从该连接器公开存储过程、tables 等。sql 连接器的主要问题是我们正在使用的存储过程只想根据涉及 sql 函数的位置从 table 调用 selects 数据,并且 sql 连接器无法生成逻辑应用程序所需的元数据读取由 select 语句编辑的 return 行。 sql 连接器只能为输出参数或 return 值生成元数据,我们无法通过任何一个 return 多行。

下一个想法和第二个复杂点是,由于我们意识到我们无法调用此存储过程并取回行,因此我们尝试通过 sql 使用 select 语句来获取我们的行连接器。这种方法的问题是我们的 where 子句必须有一个 sql 函数,这是不支持的。

忽略并发症:

假设我们可以从数据库中读取这些特定的行,然后我们想要遍历这些行,这些行应该可以通过逻辑应用中的 "repeat" 操作获得,并发送一封电子邮件。我们选择使用我们自己的自定义 api 发送电子邮件(azure 不为我们的电子邮件服务 SendWithUs 提供托管 api)。电子邮件工作完全正常,我们能够从我们的 Azure 逻辑应用程序中查看和调用我们的 api 端点。我们对这个 api 端点发送电子邮件的担忧是它不是最安全的。

我的 question/s:我们能否完成我们试图通过 sql 连接器完成的任务,还是我们应该寻找替代方案?

替代方法:将我们想做的一切都放在提供电子邮件端点的自定义 api 应用程序中。这需要连接到数据库、调用存储过程、循环存储过程的结果以发送电子邮件,然后更新已发送电子邮件的数据库记录。此时我们的逻辑应用程序将只有一个重复触发器和一个完成所有工作的 api 调用。不过,此 api 端点需要尽可能安全,同时仍可从逻辑应用访问。

Execute Stored Procs 现在在逻辑应用程序预览中可用这里是快照