MySQL IF 语句在存储过程中实现了一个基本的条件结构。其语法如下:IF expression THEN Statements; END IF; 它必须以分号结尾。为了演示在 MySQL 存储过程中使用 IF 语句,我们创建了以下存储过程,它基于名为“student_info”表的以下值:mysql> Select * from student_info; +------+---------+------------+------------+ | id | Name | Address | Subject | +------+---------+------------+------------+ | 101 | YashPal | Amritsar | History | | 105 | Gaurav | Jaipur | ... 阅读更多
实际上,当解析器遇到一个内置函数名称的单词时,它必须确定该名称是表示函数调用,还是表示对标识符(例如表名或列名)的非表达式引用。考虑以下查询:1. Select sum(salary) from employee; 2. Create table sum (i int); 在第一个查询中,SUM 是对函数调用的引用,在第二个查询中,它是对表名的引用。解析器遵循以下规则来区分其名称是在函数调用中使用还是在非引用上下文中作为标识符使用:规则1 ... 阅读更多
如果参数“count”的值大于分隔符的总出现次数,MySQL SUBSTRING_INDEX() 函数将返回与输出相同的字符串。可以使用以下示例进行演示:mysql> Select SUBSTRING_INDEX('My Name is Ram','a',3); +-----------------------------------------+ | SUBSTRING_INDEX('My Name is Ram','a',3) | +-----------------------------------------+ | My Name is Ram | +-----------------------------------------+ 1 row in set (0.00 sec) 上述查询返回相同的字符串,因为 3 大于作为参数提供的分隔符“a”的总出现次数。字符串中只有两个“a”。
局部变量是在存储过程中声明的变量。它们仅在其声明的 BEGIN…END 块内有效,并且可以具有任何 SQL 数据类型。为了演示这一点,我们创建了以下过程:mysql> DELIMITER // ; mysql> Create Procedure Proc_Localvariables() -> BEGIN -> DECLARE X INT DEFAULT 100; -> DECLARE Y INT; -> DECLARE Z INT; -> DECLARE A INT; -> SET Y = 250; -> SET Z = 200; -> SET A = X+Y+Z; -> SELECT X, Y, Z, A; -> ... 阅读更多