在 cPanel 中使用 CREATE FUNCTION 的 MySQL 问题

标签 mysql cpanel

在使用以下代码在 cpanel 中创建 mysql 函数时,我一直收到错误消息。 但是在 SQL Manger 2007 中创建 mysql 函数时,下面的代码运行正常。 谁能告诉我 cpanel 的这段代码有什么问题。

错误 :- 你的 SQL 语法有错误;检查与您的 MySQL 服务器版本对应的手册,了解在第 12 行的 '' 附近使用的正确语法 (0.81 秒)

CREATE FUNCTION F_test (topsbwynum INTEGER)
  RETURNS float(20,2)
  NOT DETERMINISTIC
  CONTAINS SQL
  SQL SECURITY DEFINER

BEGIN
    DECLARE FinalPrice VARCHAR(20); 
    DECLARE err VARCHAR(20); 
    DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET err = 1;

    IF(sbwynum > 0)THEN
        IF(FinalPrice > 0)THEN
            RETURN FinalPrice;
        ELSEIF(adjprice > 0)THEN 
            RETURN adjprice;
        ELSEIF(price > 0)THEN
            RETURN price;
        ELSEIF(estprice > 0)THEN
            RETURN estprice; 
        ELSE 
            RETURN 0; 
        END IF;
    ELSE 
        RETURN 0; 
    END IF;
END;

非常感谢。

最佳答案

对于多行语句,您不能使用相同的字符(“;”,默认情况下)来分隔函数定义和整个 CREATE 语句中的各个语句。如果您尝试,创建语句将在第一个“;”处结束(在示例代码中,它位于第一个 DECLARE 之后)。由于语句语法错误位于截断语句的末尾,因此错误消息将 '' 作为语句中发生错误的部分。

从命令行客户端,您将使用 delimiter 命令将客户端使用的分隔符更改为(例如)“;;”,然后使用此分隔符结束创建语句:

delimiter ;;
CREATE FUNCTION F_test (topsbwynum INTEGER)
    ...
END;;
delimiter ;

在 phpMyAdmin 中,有一个“分隔符”字段可以实现相同的目的。

关于在 cPanel 中使用 CREATE FUNCTION 的 MySQL 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5946332/

相关文章:

java - 在数据库和 postman 上无法看到实际上传的文件(.pdf 格式)格式?

php - 如何通过表单在数据库中存储美元和欧元等特殊符号

mysqldump 从 cPanel 中的 Cron 作业创建 0 字节 sql 文件

c# - 在 C#.NET 的帮助下,将数据从我的计算机连接并插入到服务器的 MySQL DB 表

mysql - 与 Laravel/Eloquent 的复杂关系

mysql - 更改 SQL 数据库服务器

php - 使用单个 id 列查询逗号分隔列?

php - 管道邮件到 PHP 脚本 : cant find the pip. php 文件

php - Fresh Magento 2.3.0 安装没有 CSS

phpmyadmin - 表名称和“查询”选项卡旁边的红色圆圈中的警告标志/感叹号?