首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mysql存储函数调用动态存储过程

mysql存储函数调用动态存储过程
EN

Stack Overflow用户
提问于 2014-08-16 02:48:48
回答 2查看 1.1K关注 0票数 0

我有一个存储过程,它连接sql以执行插入/更新等操作。然而,我不喜欢它的调用方式(它的OT,但我使用node.js和调用存储过程是很难完成的,而且似乎没有太多的支持/文档)。

因此,我决定创建一个“简单的”mysql存储函数,它将基本上调用存储过程(使用几个IN参数调用函数,使用相同的IN参数加上OUT参数调用过程(来自函数) )。

但是,我得到一个错误:

代码语言:javascript
复制
Dynamic SQL is not allowed in stored function or trigger

是的,我读过关于函数和动态sql是不允许的。但是:我正在从过程中执行动态sql,而不是从函数中。但是mysql仍然不喜欢它。对此有解决方案吗?我不认为我的代码有什么问题...

代码语言:javascript
复制
CREATE FUNCTION my_func(a varchar(50), b varchar(50), c varchar(50), d integer, e integer)
RETURNS INT(10)
DETERMINISTIC
BEGIN
set @theid = 0;
call my_proc(a, b, c, d, e, @theid);
RETURN (@theid);
EN

回答 2

Stack Overflow用户

发布于 2014-08-16 02:58:27

Q:,但MySQL仍然不喜欢它。对此有解决方案吗?

不是的。

“函数中不允许使用动态SQL”限制也扩展到该函数调用的任何存储过程。

没有解决方案。没有解决方法。

这是不可能做到的:您不能在函数或触发器的上下文中使用动态SQL。

票数 1
EN

Stack Overflow用户

发布于 2014-08-16 03:00:09

我现在不能在代码中确认这一点,但我假设在给定的MySQL线程中,有一些与准备好的查询相关联的数据结构,每次只能存在一个。由于存储的函数或触发器是从查询(可能是动态SQL本身)中调用的,因此该函数或触发器不能启动新的动态SQL查询。

因此,动态SQL在过程中并不重要。您不能创建准备和执行动态SQL的存储函数,无论是目录还是间接的。

您可能正在尝试为已解决的问题找到解决方法。请参阅Is there a driver for mysql on nodejs that supports stored procedures?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25332353

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档