晴海 2023-04-24 14:32 采纳率: 100%
浏览 75
已结题

在mysql 中创建函数,输入参数n,计算1到 n的n个数的阶乘之和。

老是创建错误,没看懂提示错误,求解答错误原因和正确的修改方案。

img

  • 写回答

3条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-04-24 16:20
    关注
    • 你可以看下这个问题的回答https://ask.csdn.net/questions/797812
    • 你也可以参考下这篇文章:mysql查询时间在创建时间N天之内的数据
    • 除此之外, 这篇博客: MySQL模糊查询中的几种类型中的 _含有下划线的:通常表示用来限制模糊查询的字符个数,除开要查询的字符一个下划线就是匹配一个字符两个下划线就是两个字符n个字符就是匹配到n个字符 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
    • --1.下划线开始 查询出来的结果就是含有两个字符并且是以学结尾的例如下面的这条语句
      select name from tb_category where name LIKE "_学"
      --查询结果如下:
      --文学
      --哲学
      --国学
      
      --2.下划线结尾 查询出来的结果就是含有两个字符并且是以学开头的例如下面的这条语句
      select name from tb_category where name LIKE "学_"
      
      --查询结果如下:
      --学神
      --学王
      --学圣
      
      --3.下划线开头和结尾 查询出来的结果就是含有三个字符并且是以学在中间的例如下面的这条语句
      select name from tb_category where name LIKE "_学_"
      
      --查询结果如下:
      --爱学习
      --大学师
      
      --4.多个下划线查询出来的结果就是含有多个字符例如下面的这条语句是学后面两个下划线的
      select name from tb_category where name LIKE "_学__"
      
      --查询结果如下:
      --大学老师
      
    • 以下回答由chatgpt基于相关博客总结生成:

      答案:

      在MySQL中创建阶乘和函数的正确方式是使用自定义函数来实现,实现方式如下:

      1.创建一个自定义函数,名为factorial_sum,输入参数为正整数n。该函数的作用是返回1到n中n个数的阶乘之和。

      CREATE FUNCTION factorial_sum(n INT) RETURNS INT
      BEGIN
          DECLARE i INT DEFAULT 1;
          DECLARE result INT DEFAULT 0;
      
          WHILE(i <= n) DO
              SET result = result + factorial(i);
              SET i = i + 1;
          END WHILE;
      
          RETURN result;
      END
      

      2.在自定义函数中再创建一个函数,名为factorial,用于计算阶乘。该函数的输入参数为正整数k,返回值为k的阶乘。代码如下:

      CREATE FUNCTION factorial(k INT) RETURNS INT
      BEGIN
          DECLARE i INT DEFAULT 1;
          DECLARE result INT DEFAULT 1;
      
          WHILE(i <= k) DO
              SET result = result * i;
              SET i = i + 1;
          END WHILE;
      
          RETURN result;
      END
      

      3.测试自定义函数,使用SELECT语句调用该函数并传入参数,即可输出结果。例如,调用factorial_sum(5):

      SELECT factorial_sum(5);
      

      输出结果为153。

      错误提示含义:

      在创建函数时,可能出现如“ERROR 1418 (HY000)-This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you might want to use the less safe log_bin_trust_function_creators variable)”这类错误提示。

      这是因为MySQL的安全限制所导致的,MySQL默认不允许在有二进制日志记录的情况下创建不确定性的函数(没有指定DETERMINISTIC、NO SQL或READS SQL DATA)。要解决这个问题,有两种方法:

      方法一: 修改MySQL的配置文件my.cnf,在[mysqld]下添加行记录:log_bin_trust_function_creators=1。然后重新启动MySQL服务。

      方法二: 在创建函数时,使用DETERMINISTIC关键字,表示该函数是确定性函数,是不会对数据做出改变的。例如:

      CREATE FUNCTION factorial_sum(n INT) RETURNS INT 
      DETERMINISTIC
      BEGIN
          ......
      END
      
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 5月2日
  • 已采纳回答 4月24日
  • 创建了问题 4月24日

悬赏问题

  • ¥15 怎样才能让鼠标沿着线条的中心线轨迹移动
  • ¥60 用visual studio编写程序,利用间接平差求解水准网
  • ¥15 Llama如何调用shell或者Python
  • ¥20 谁能帮我挨个解读这个php语言编的代码什么意思?
  • ¥15 win10权限管理,限制普通用户使用删除功能
  • ¥15 minnio内存占用过大,内存没被回收(Windows环境)
  • ¥65 抖音咸鱼付款链接转码支付宝
  • ¥15 ubuntu22.04上安装ursim-3.15.8.106339遇到的问题
  • ¥15 blast算法(相关搜索:数据库)
  • ¥15 请问有人会紧聚焦相关的matlab知识嘛?