mysql - 无法创建函数 MySQL 语法错误

标签 mysql

我似乎无法让它正常工作,我总是遇到不同的错误。此时如有任何建议,我们将不胜感激...

CREATE DEFINER=`db`@`localhost` FUNCTION `output_date`(in_date DATE) RETURNS DATE 
    READS SQL DATA
BEGIN 
    DECLARE date_format_index INT;
    DECLARE date_format_string VARCHAR;

    SELECT s.output_date_format INTO date_format_index FROM config s 
    SET date_format_string = ( CASE date_format_index WHEN 2 THEN '%d-%m-%Y' WHEN 3 THEN '%m-%d-%Y' ELSE '%Y-%m-%d' END );

    RETURN in_date 
END

我在尝试处理此函数时使用 DELIMITER $$。

当前错误是...

Error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '; SELECT s.output_date_format INTO date_format_index FROM system_config s SET d'

我的环境是MyEclipse,最新版本。 我的MySQL版本是5.2。

最佳答案

您缺少一些分号以及 varchar 的问题,请尝试以下操作:

DELIMITER $$

CREATE DEFINER=`db`@`localhost` FUNCTION `output_date`(in_date DATE) RETURNS DATE 
    READS SQL DATA
BEGIN 
    DECLARE date_format_index INT;
    DECLARE date_format_string VARCHAR(100);  -- obviously change the size

    SELECT s.output_date_format INTO date_format_index FROM config s;
    SET date_format_string = ( CASE date_format_index WHEN 2 THEN '%d-%m-%Y' WHEN 3 THEN '%m-%d-%Y' ELSE '%Y-%m-%d' END );

    RETURN in_date;
END
$$
DELIMITER ;

它在我的盒子上运行。

关于mysql - 无法创建函数 MySQL 语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33555111/

相关文章:

php - 使用评估();直接从数据库执行php

javascript - PHP JavaScript - 单个 phpmyadmin 表中的多个复选框选择

mysql - 如何在同一个表中正确组织历史数据?

php - jQuery 和 php 注册脚本不起作用

mysql - 选择按最低 second_field 过滤具有相同字段的行的条目

mysql - Facebook 或 Twitter 是如何实现他们的订阅系统的

PHP 只从数据库返回一个值

mysql - SQL 按字母升序和数字降序排列同一列

php - PDO 绑定(bind)参数在登台和托管服务器上静默失败

php - 将 wordpress 网站移动到不同的 url