我有一个奇怪的情况,我想在 SQL 字符串中表达一个变量。基本上 ODBC 将返回带有字符串的查询,在该字符串中将有一个 Asterisk 变量,我需要将其表达并传递回 SQL。例如(毫无意义的代码,但显示了示例)-
exten => s,n,Set(QUERY=${ODBC_GET_QUERY(${EXTEN})})
func_odbc.conf
中的 SQL 查询是 SELECT query FROM tablea WHERE number = ${ARG1}
现在 QUERY 看起来像 to = ${DIALED}
,${DIALED}
是一个 Asterisk 变量(例如,我将其设置为 17005551212)我需要这样的措辞所以我最终得到 -
exten => s,n,Set(ALLOWED=${ODBC_GET_ALLOWED(${QUERY})})
func_odbc.conf 中的 SQL 查询将是 SELECT allowed FROM tableb WHERE ${ARG1}
,因此 SQL 查询将解析为 SELECT allowed WHERE to = 17005551212
。
在我深入研究这个问题并重新发明轮子之前,这是否可能甚至被允许?其实我还没有尝试过。我知道在 Set()
语句中它会内联地表达变量,但是有没有办法在通过 ODBC 返回变量时表达变量中的变量?谢谢!
最佳答案
请仔细阅读源码。
Func odbc 使用准备调用。因此它不适用于您的示例,因为 prepair 不允许这样做。
一般来说,您可以替换变量。示例 1 可以正常工作。
解决方法 - 使用 mysql EXEC。
关于mysql - 变量中的 Asterisk 短语变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43740188/