【问题标题】:What is the Syntax Error in this mySql script这个 mySql 脚本中的语法错误是什么
【发布时间】:2014-03-18 18:52:38
【问题描述】:

我写了一个存储函数:

  USE sakila;

DROP FUNCTION IF EXISTS sumOfFilm;

DELIMITER $$

CREATE FUNCTION sumOfFilm(
    mStore_id TINYINT, mMonth VARCHAR(4), mYear VARCHAR(4))
BEGIN
    DECLARE @sumOfFilm INT;
    SELECT COUNT(*) INTO @sumOfFilm FROM rental
    INNER JOIN inventory ON rental.inventory_id=inventory.inventory_id
    INNER JOIN store ON store.store_id=inventory.store_id
    WHERE mStore_id=store.store_id AND
            mMonth=month(rental_date) AND
            mYear=year(rental_date)
    GROUP BY store.store_id;
    RETURN @sumOfFilm;
END$$

DELIMITER ;

当我执行它时,我收到一条错误消息:

ERROR 1064 (42000):您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以获取在 'BEGIN 附近使用的正确语法 声明@sumOfFilm INT; 从租赁中选择 COUNT(*) 到 @sumOfFilm INN' 在第 3 行

请帮帮我:)

【问题讨论】:

  • 也许做 SET @sum = SELECT COUNT(*)
  • 我试过了,但没有任何改变
  • 您是否像我发送的那样查看了 SO?
  • SET @sum = (SELECT COUNT(*) .... ) 抱歉忘记在 SET 周围添加 ()

标签: mysql sql


【解决方案1】:
  USE sakila;

DROP FUNCTION IF EXISTS sumOfFilm;

DELIMITER $$

CREATE FUNCTION sumOfFilm(
    mStore_id TINYINT, mMonth VARCHAR(4), mYear VARCHAR(4))
BEGIN
    SELECT @sumOfFilm := COUNT(*) FROM rental
    INNER JOIN inventory ON rental.inventory_id=inventory.inventory_id
    INNER JOIN store ON store.store_id=inventory.store_id
    WHERE mStore_id=store.store_id AND
            mMonth=month(rental_date) AND
            mYear=year(rental_date)
    GROUP BY store.store_id;
    RETURN INT @sumOfFilm;
END$$

DELIMITER ;

也可以试试

SET @sumOfFilm = (SELECT COUNT(*) FROM rental)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-09
    • 2013-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多