如果MySQL在创建函数时出现错误“ERROR 1336 (0A000): Dynamic SQL”怎么办

分类:编程技术 时间:2024-02-20 15:47 浏览:0 评论:0
0
本文主要介绍在MySQL中创建函数时出现“ERROR 1336 (0A000): Dynamic SQL”错误的处理方法。文章中的介绍非常详细,有一定的参考价值。感兴趣的朋友一定要读一下!

创建函数时出错
mysql>分隔符$$
mysql> CREATE FUNCTION is_SQLScriptReferenceExist (THE_REFERENCE VARCHAR(75), THE_VERSION_LEVEL_TABLE_NAME VARCHAR(75)) RETURNS INTEGER DETERMINISTIC
-> BEGIN
-> 声明 THE_REFERENCE_LABEL VARCHAR(80);
-> 声明未找到的继续处理程序
-> BEGIN
-> RETURN 0;
-> END ;
-> SELECT concat('select c_reference_label INTO THE_REFERENCE_LABEL from ', THE_VERSION_LEVEL_TABLE_NAME, ' where C_REFERENCE_LABEL = ''', THE_REFERENCE, '''') INTO @stmt;
  ->      准备 STMT来自@stmt;参考资料; */
->           返回 1;
错误原因:
MySQL函数和触发器中不允许使用动态函数

可以重写为存储过程
mysql> delimiter $$
mysql> CREATE PROCEDURE is_SQLScriptReferenceExist ( IN THE_REFERENCE VARCHAR(75), IN THE_VERSION_LEVEL_TABLE_NAME VARCHAR(75), OUT V_RET INT(2))
-> BEGIN
->   DECLARE THE_REFERENCE_LABEL VARCHAR(80);
-> DECLARE未找到的继续处理程序
-> BEGIN
-> SET V_RET = 0;
-> END;
->         SELECT concat('select c_reference_label INTO THE_REFERENCE_LABEL from ', THE_VERSION_LEVEL_TABLE_NAME, ' 其中 C_REFERENCE_LABEL = ''', THE_REFERENCE, '''') INTO @stmt;
  ->     从 @stmt 准备 STMT;
->         执行 STMT;
                                                                                                                                                                                                    不这样做。THE_REFERENCE; */
-> SET V_RET = 1;
-> END$$
查询正常,0 行受影响(0.00 秒)

mysql> 分隔符;

以上是《MySQL创建函数时出现错误'ERROR 1336(0A000): Dynamic SQL'怎么办》一文的全部内容,谢谢你来读书!希望分享的内容对大家有所帮助。更多相关知识,欢迎关注行业资讯频道!

1. 本站所有资源来源于用户上传或网络,仅作为参考研究使用,如有侵权请邮件联系站长!
2. 本站积分货币获取途径以及用途的解读,想在本站混的好,请务必认真阅读!
3. 本站强烈打击盗版/破解等有损他人权益和违法作为,请各位会员支持正版!
4. 编程技术 > 如果MySQL在创建函数时出现错误“ERROR 1336 (0A000): Dynamic SQL”怎么办

用户评论