在mysql中,我正在尝试创建一个返回bash命令结果的函数。我已经创建了一个简化版本,试图让它更容易理解。
我有一个名为mycmd.sh的文件,在其中,我有这一行:
echo $1 'test'
在mysql中,我执行sh文件它正常工作
system ~/mycmd.sh 'test'
但是我希望能够在mysql中进行选择时调用它,就像这样
select myFunc(username) from user;
结果是,每个用户名都会在其后面进行“测试”。
问题是当我尝试创建mysql函数时
CREATE FUNCTION myFunc(s VARCHAR(500)) RETURNS VARCHAR(505)
RETURN SYSTEM ~/mycmd.sh s;
我总是收到错误:ERROR 1064(42000):您的SQL语法出错;检查与MySQL服务器版本对应的手册,以便在第2行的'〜/ mycmd.sh s'附近使用正确的语法
我尝试将它放在引号中,或者在变量中,或者在准备好的声明中,但似乎没有任何效果......
任何人都知道该怎么做?
谢谢
答案 0 :(得分:1)
不幸的是,如果不使用UDF(用户定义插件),您无法做到这一点。您正在使用的system
命令是MySQL shell的一部分,而不是实际的MySQL函数,这就是为什么它在您尝试定义的函数中不起作用的原因。
我能想到的唯一另一个选择就是编写一个模仿你外部命令要做的事情的程序。