我想知道如何使用等效于:
SET ARITHABORT ON
AND
WITH RECOMPILE option
在informix存储过程中?
答案 0 :(得分:2)
设置ARITHABORT ON Sql Server手册说:溢出时溢出或终止查询 在查询执行期间发生了被零除错误。
在Informix中,默认情况下,在执行任何UDR / SP(过程或函数)期间发生的任何错误都将触发异常,这将在用户会话级别自动引发。这将包括任何算术错误。
你在SPL中可以做的是反过来,包括一个不允许这个异常达到用户会话范围的处理。 关于ON EXCEPTION
的阅读WITH RECOMPILE option
Sql Server手册说:创建指定的存储过程 其定义中的WITH RECOMPILE选项表示SQL Server 不缓存此存储过程的计划;存储过程 每次执行时都会重新编译。使用WITH RECOMPILE选项 当存储过程采用值差异很大的参数时 在执行存储过程之间,导致不同 每次都要创建执行计划。使用此选项是 不常见并导致存储过程执行得更慢, 因为每次存储过程都必须重新编译 执行。
在Informix中运行类似的解决方案:update statistics for procedure <your_proc>;
查看Informix Manual here