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