mysql - 用户定义函数 MySQL Workbench

标签 mysql sql

如何执行用户定义的函数以便数据库识别该函数已创建?

DELIMITER $$ 
CREATE FUNCTION `StudentGPA` (StudentID int, ClassStartDateStart datetime, ClassStartDateEnd date time) RETURNS  decimal(3,2) 
BEGIN 

Declare AvgGPA decimal(3,2); 

SELECT AvgGPA= isNULL(Avg(GPA), 0.0) 
FROM Students_Classes 
WHERE StudentID = StudentID 
  AND StartDate > ClassStartDateStart 
  AND StartDate <= ClassStartDateEnd 
  AND GPA > 0; RETURN AvgGPA; 

END

最佳答案

运行代码时,您应该会收到语法错误。在指定参数的 CREATE 语句中,您需要将 ClassStartDateEnd 日期时间 更改为 ClassStartDateEnd 日期时间

DELIMITER $$ 
CREATE FUNCTION `StudentGPA` 
  (StudentID int, 
   ClassStartDateStart datetime, 
   ClassStartDateEnd datetime)
  RETURNS decimal(3,2) 

BEGIN 

  Declare AvgGPA decimal(3,2); 

  SELECT AvgGPA= isNULL(Avg(GPA), 0.0) 
  FROM Students_Classes 
  WHERE StudentID = StudentID 
    AND StartDate > ClassStartDateStart 
    AND StartDate <= ClassStartDateEnd 
    AND GPA > 0; RETURN AvgGPA; 

END$$
DELIMITER ;

我还在 END 语句后使用了 $$ 的 DELIMITER 来正确终止 CREATE,然后将分隔符设置回 ; 这是很好的做法。

关于mysql - 用户定义函数 MySQL Workbench,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23621043/

相关文章:

mysql - 为什么 SELECT * FROM Table where username = 0 显示所有行? [用户名列是 varchar]

java - 使用在下一个 `INSERT OR IGNORE` 语句中插入 `INSERT` 的 ID

php - 如何通过预订获取可用日期?

MySQL 插入条件日期时间

php - 如何从 SQL 查询中排除特定的 id?

mysql - 在创建从两个表中选择数据的 MYSQL 查询时遇到问题

sql - 查询子串形成

MySQL合并两列

Python 2.7 和 MySQL : grooming tuple

sql - 优化 SQL 查询以移除游标