我正在使用
我使用func_odbc.so在SQL中执行 update语句。更新语句运行正常,没有问题。但我希望能够在发生错误时捕获错误,例如断开连接或网络中断。
这是我的更新声明
UPDATE Customers SET AccountBalance = AccountBalance - ${VAL1} WHERE cif = ${ARG1}
我的dialPlan函数调用(在extension.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 failer?
答案 0 :(得分:0)
对于更新,如果writesql错误,它应该返回-1。
但是您应该理解,星号是PBX,不适合用于复杂的SQL检查。
可能的解决方法
1)使用命令创建其他表,创建外部脚本以检查该表是否有新的“操作”,然后发送回结果/错误。 0.5秒,1秒等后,请检查星号。
2)创建简单的rest API,并使用func_CURL。