mysql中函数的注意事项以及局部变量的注意事项

mysql中函数的注意事项以及局部变量的注意事项

直接po代码

#mysql中函数的注意事项以及局部变量的注意事项

#定义一个函数(可以正确执行)
DELIMITER $
CREATE FUNCTION test1() RETURNS INT
BEGIN
    INSERT INTO book(bName, price, bTypeId) VALUES ('萍踪侠影', 36.72, 10);
    RETURN 888;
END$
#调用函数
SELECT test1()$

#定义一个函数(可以正确执行)
DELIMITER $
CREATE FUNCTION test2() RETURNS INT
BEGIN
    #DECLARE testNumber1 int; #定义局部变量(注意:局部变量可以只声明,不初始化)
    DECLARE testNumber2 INT DEFAULT 999; #定义局部变量并赋值初始化
    INSERT INTO book(bName, price, bTypeId) VALUES ('倚天屠龙记', 88.56, 10);
    RETURN testNumber2;
END$
#调用函数
SELECT test2()$


/*
会报错原因在于,局部变量作用域仅仅在定义它的begin end块中有效,并且
局部变量必须写在begin end中的开头,即必须写在begin end中的第一句话
*/

#定义一个函数(会报错)
DELIMITER $
CREATE FUNCTION test3() RETURNS INT
BEGIN
    INSERT INTO book(bName, price, bTypeId) VALUES ('鹿鼎记', 57.29, 10);
    #DECLARE testNumber1 int; #定义局部变量(注意:局部变量可以只声明,不初始化)
    DECLARE testNumber2 INT DEFAULT 678; #定义局部变量并赋值初始化
    RETURN testNumber2;
END$
#


#定义一个函数(可以正确执行)
DELIMITER $
CREATE FUNCTION test4() RETURNS INT
BEGIN
    #SELECT COUNT(*) FROM employees;
    #SELECT * FROM employees;
    #select last_name, email, salary from employees;
    RETURN 666;
END$

#调用函数
SELECT test4()$


#定义一个函数(会报错,报错原因在下面会总结)
DELIMITER $
CREATE FUNCTION test5() RETURNS INT
BEGIN
    SELECT COUNT(*) FROM employees;
    SELECT * FROM employees;
    SELECT last_name, email, salary FROM employees;
    RETURN 666;
END$
#

#定义一个函数(可以正确执行)
DELIMITER $
CREATE FUNCTION test6() RETURNS INT
BEGIN
    DECLARE myTest INT;
    SELECT COUNT(*) INTO myTest FROM employees;
    RETURN 666 + myTest;
END$
#调用函数
SELECT test6()$
#


#定义一个存储过程(可以正确执行)
DELIMITER $
CREATE PROCEDURE test7()
BEGIN
    SELECT COUNT(*) FROM employees;
    SELECT * FROM employees;
    SELECT last_name, email, salary FROM employees;
END$

#调用存储过程
CALL test7()$

/*
注意:
在mysql的trigger和function中不能出
现select * from table;或select 字段1, 字段2, 字段3 from table;等等形式的查
询,因为其会返回一个结果集;而这在mysql的trigger和function中是不可接
受的,但是在存储过程中可以。在trigger和function中可以使
用select ... into ...形式的查询
*/

你可能感兴趣的:(mysql中函数的注意事项以及局部变量的注意事项)