如何处理星号拨号计划中的sql故障

fykwrbwg  于 2021-08-13  发布在  Java
关注(0)|答案(1)|浏览(259)

我正在使用
星号认证/16.8-cert2
mssql express 2014版
unixodbc 2.3.1版
freetds 1.1.20版
lua 5.1.4
世纪7
我正在用func\u odbc.so在sql中执行update语句。update语句工作正常,没有问题。但我希望在发生错误时能够捕捉到错误,比如断开连接或网络中断。
这是我的最新声明

UPDATE Customers SET AccountBalance = AccountBalance - ${VAL1} WHERE cif = ${ARG1}

my dialplan函数调用(in extention.lua) local statues = channel.ODBC_ErrorTest(1499):set(10) 我认为我可以让它工作的一件事是,在sql语句中添加try和catch blook,如下所示,因此如果有错误,它将返回错误号

BEGIN TRY 
  UPDATE Customers SET AccountBalance = AccountBalance - a WHERE cif = 17399 
END TRY 
BEGIN CATCH 
 SELECT   ERROR_NUMBER() AS ErrorNumber 
END CATCH

但是当我尝试执行这个时,它不会在出现故障时返回错误号,只返回一个空字符串。
所以我的问题很简单,如何处理拨号计划中的sql故障?

dxpyg8gm

dxpyg8gm1#

对于update,如果出现writesql错误,它应该返回-1。
不过,您应该了解,星号是pbx,不适合复杂的sql检查。
可能的解决方法
1) 用命令创建其他表,创建外部脚本检查新的“操作”并发回结果/错误。0.5秒、1秒等后签入星号。
2) 创建简单的restapi并使用func\u curl。

相关问题