mysql创建function报错[Err] 1415 - Not allowed to return a result set from amysql functionn

个人觉得还是书的作者给出的解釋比较地道

可以用返回值或者其他方式看触发器是否工作。

MySQL中定义一个触发器返回自增加的id徝

如果以上返回的是一个数据集,那只想返回单行id应该怎么写

在MySQL必知必会P182 触发器这一节中有┅个创建newproduct触发器的例子

但是实际在命令行中运行的时候报错:

该语法在MySQL 5 中是允许的,但是在之后的版本中已经不支持了

(也许还有其他解决方案,只是分享学习中遇到的错误以及我解决的办法如果上述说法有错误,请批评指正谢谢)


版权声明:本文为博主原创文章未经博主允许不得转载。 /sinat_/article/details/

MySQL除了自带的系统函数也允许用户自定义函数。创建自定义函数基本的语法格式为:

以下函数自定义函数get_name_fn()用于根据学生的学号返回学生姓名:

“##”标记的部分是有问题的语法一般保持返回值数据类型前后一致就行了,输入:

参数no和参数role是学生的學号和学生角色返回结果为:

出现这样的错误原因是返回参数name的字符集设置不对,函数体中如果执行else语句则返回的name是中文之前定义函數时并没有设置返回参数的中文编码格式,所以需要进行修改(删除原来的函数后重新定义):

说明函数的执行是正确的

触发器不能调用将数据返回客户端的存储程序也不能使用采用CALL语句的动态SQL语句,

但是允许存储程序通过参数将数据返回触发程序也就是存储过程或者函数通过OUT或者INOUT类型的参数将数据返回触发器是可以的,

但是不能调用直接返回数据的的过程 

通俗的说就是不能在一个触发器中调用其他存储过程或者触發器,所以三楼的做法是对的

三楼的方法也无法运行还有什么方法替换吗


换一下思路,直接获取当前执行的SQL语句字段这样更简单

mysql触发器是不允许返回结果集的,《MySQL必知必会》那本书上关于触发器的代码都是错误的

匿名用户不能发表回复!

我要回帖

更多关于 mysql function 的文章

 

随机推荐