R024---UiPath之Execute Query的TimeOut属性设置引起的程序错误及解决

​一、缘起

昨天遇到一个关于Execute Query的奇怪问题,今天解决了,做个记录,供参考。

二、问题

R024---UiPath之Execute Query的TimeOut属性设置引起的程序错误及解决_第1张图片

程序执行到Execute Query这一步时(其实这一步是循环中的一个步骤,已经跑了11次,跑第12次时报错),报错信息:字典引用的key不存在。

Execute Query的SQL语句的拼接中,确实用到字典变量。

于是,在这一步前增加Write Line,把Execute Query中拼接SQL语句的语句,通过Write Line输出,结果发现这个SQL语句拼接正常,没有因为用到字段变量而报错,那为什么执行到Execute Query就报上面的关于字典的错误?

三、解决

3.1 新建流程文件,将Execute Query这一步单独复制出来执行,报错:

R024---UiPath之Execute Query的TimeOut属性设置引起的程序错误及解决_第2张图片

实际上我并没有主动取消该流程。

3.2 在navicat中执行该SQL语句,结果正常,用时72秒。

      猜想:是不是因为运行时间太长超时导致。

      于是找到Execute Query的Timeout属性,属性提示:Specifies the amount of time (in milliseconds) to wait for the activity to run before an error is thrown. The default value is 30000 milliseconds (30 seconds).

        中文:指定在抛出错误之前等待活动运行所需的时间(以毫秒为单位)。默认值为30000毫秒(30秒)。

      看来就是这里问题了,如果不设置Timeout的属性值,运行时间超过30秒,Execute Query就自动中断,从而出现上面的提示:用户请求取消当前操作。

      设置Timeout的属性值500000(500秒),重新跑,流程正常跑了!

四、总结

      有Timeout属性的Activity,请注意其默认时间,如果默认时间不够,请设置合理的时间,以便Activity不会自己中断,导致程序错误。

五、附:UiPath网站Execute Query中文翻译

       https://activities.uipath.com/docs/execute-query

UiPath.Database.Activities.ExecuteQuery

对数据库执行查询,返回查询结果类型Datatable。

属性

连接配置

  • ProviderName - 用于访问数据库的数据库提供程序的名称。

  • ConnectionString - 用于建立数据库连接的连接字符串。

  • ExistingDbConnection - 从Connect或Start Transaction活动获取的已打开的数据库连接。此属性以及ConnectionString和ProviderName属性是互斥的; 如果设置了此属性,则无法再设置其他属性。

杂项

  • Private - 如果选中,则不再以Verbose级别记录变量和参数的值。

  • CommandType - 指定如何解释命令字符串。可以使用以下选项:Text - 执行SQL参数中给出的查询。StoredProcedure - 调用SQL参数中指定的过程名称。TableDirect - 从表中调用所有记录。

输入

  • Sql - 要执行的sql命令。必须根据CommandType属性中的选择完成此字段。

  • 参数 - 绑定到sql命令的命名参数的字典。通过在sql命令中指定'@parameterName'语句来完成绑定。在运行时,parameterName将替换为字典中的值。

Common

  • DisplayName - 活动的显示名称。

  • ContinueOnError - 指定即使活动引发错误,自动化是否仍应继续。该字段仅支持布尔值(True,False)。默认值为False。因此,如果该字段为空并且抛出错误,则项目的执行将停止。如果该值设置为True,则无论出现任何错误,项目的执行都将继续。

注意:

如果此活动包含在Try Catch中,并且ContinueOnError属性的值为True,则在执行项目时不会捕获任何错误。

  • TimeoutMS - 指定在引发错误之前等待活动运行的时间量(以毫秒为单位)。默认值为30000毫秒(30秒)。

重要!

此字段中指定的时间量不包括查询结果检索的响应时间。这意味着活动的总执行时间可能大于TimeoutMS属性适用的实际查询执行时间。

输出

  • DataTable - 将SQL查询的输出存储在DataTable变量中。


(正文结束)

 

附1:关于本公众号

微信公众号名称:柴班说

欢迎转载与分享,也请注明出处。

 

附2:关于本文作者

微信号:chaijw

识别下面的二维码,可以与作者进行更为深入的交流。

 

 

你可能感兴趣的:(流程自动化机器人,RPA,UiPath)