mysql 如何通过匹配函数的输入从另一列返回值?

qkf9rpyu  于 2022-11-21  发布在  Mysql
关注(0)|答案(2)|浏览(176)

Table

CREATE DEFINER=`root`@`localhost` FUNCTION `GetGPA`(sName VARCHAR(45)) RETURNS float
    DETERMINISTIC
BEGIN
DECLARE grade FLOAT;
DECLARE sName VARCHAR(45);

SELECT GPA INTO grade
FROM student
WHERE studentName = sName;

RETURN grade;
END

我执行了该函数,它返回null:Stored Function
我试着用一个函数输入一个学生的名字来返回一个学生的GPA。

stszievb

stszievb1#

用途:

CREATE FUNCTION GetGPA (sname varchar(45)) 
  RETURNS float DETERMINISTIC
BEGIN
 DECLARE grade FLOAT;
   SELECT GPA INTO grade
   FROM student
   WHERE StudentName = sName;
  RETURN grade;
END

https://dbfiddle.uk/AF9iO_l8
参考文献
你的函数中唯一的问题是DECLARE sName VARCHAR(45);删除那个部分,你的函数就可以了

5f0d552i

5f0d552i2#

当你使用Into关键字时,意味着你创建了临时表。到目前为止,你应该使用一个变量,它的类型等于GPA列和set值,最后返回它:

CREATE DEFINER=`root`@`localhost` FUNCTION `GetGPA`(sName VARCHAR(45)) RETURNS float
    DETERMINISTIC
BEGIN
DECLARE @grade FLOAT;
DECLARE sName VARCHAR(45);

SELECT @grade=GPA  
FROM student
WHERE studentName = sName;

RETURN @grade;
END

相关问题