MySQL 不确定原因的未声明变量错误
MySQL Undeclared variable error not sure why
我写的这个程序有问题。它给了我一个未声明的 var 错误,我不知道为什么。我试过了
employee_id as id
with no luck.I 在同一语句中也有 select MIN 和 MAX,但它抛出相同的未声明错误,因此我不得不将其拆分。欢迎所有建议,谢谢!
程序
delimiter $
drop procedure if exists Q3;
create procedure Q3(emp1 decimal(6), emp2 decimal(6), emp3 decimal(6))
BEGIN
declare sal1 decimal(8,2);
declare sal2 decimal(8,2);
declare sal3 decimal(8,2);
declare empH decimal(6);
select MAX(sl) into sal1, employee_id into empH from (
select salary as sl, employee_id
from employees
where employee_id = emp1
OR employee_id = emp2
OR employee_id = emp3
) as emp_sl;
select MIN(sl) into sal2 from (
select salary as sl from employees
where employee_id = emp1
OR employee_id = emp2
OR employee_id = emp3
) as sals;
select sal1;
select sal2;
END$
delimiter ;
员工table
+----------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------------+--------------+------+-----+---------+-------+
| employee_id | decimal(6,0) | NO | PRI | NULL | |
| first_name | varchar(20) | YES | | NULL | |
| last_name | varchar(25) | NO | | NULL | |
| email | varchar(25) | NO | UNI | NULL | |
| phone_INT | varchar(20) | YES | | NULL | |
| hire_date | date | NO | | NULL | |
| job_id | varchar(10) | NO | | NULL | |
| salary | decimal(8,2) | YES | | NULL | |
| commission_pct | decimal(2,2) | YES | | NULL | |
| manager_id | decimal(6,0) | YES | | NULL | |
| department_id | decimal(4,0) | YES | | NULL | |
+----------------+--------------+------+-----+---------+-------+
和错误
ERROR 1327 (42000) at line 3: Undeclared variable: employee_id
尝试改变
select MAX(sl) into sal1, employee_id into empH
至
select MAX(sl), employee_id into sal1, empH
into 之后的所有内容都需要是一个变量,并且只需要使用一次。
我写的这个程序有问题。它给了我一个未声明的 var 错误,我不知道为什么。我试过了
employee_id as id
with no luck.I 在同一语句中也有 select MIN 和 MAX,但它抛出相同的未声明错误,因此我不得不将其拆分。欢迎所有建议,谢谢!
程序
delimiter $
drop procedure if exists Q3;
create procedure Q3(emp1 decimal(6), emp2 decimal(6), emp3 decimal(6))
BEGIN
declare sal1 decimal(8,2);
declare sal2 decimal(8,2);
declare sal3 decimal(8,2);
declare empH decimal(6);
select MAX(sl) into sal1, employee_id into empH from (
select salary as sl, employee_id
from employees
where employee_id = emp1
OR employee_id = emp2
OR employee_id = emp3
) as emp_sl;
select MIN(sl) into sal2 from (
select salary as sl from employees
where employee_id = emp1
OR employee_id = emp2
OR employee_id = emp3
) as sals;
select sal1;
select sal2;
END$
delimiter ;
员工table
+----------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------------+--------------+------+-----+---------+-------+
| employee_id | decimal(6,0) | NO | PRI | NULL | |
| first_name | varchar(20) | YES | | NULL | |
| last_name | varchar(25) | NO | | NULL | |
| email | varchar(25) | NO | UNI | NULL | |
| phone_INT | varchar(20) | YES | | NULL | |
| hire_date | date | NO | | NULL | |
| job_id | varchar(10) | NO | | NULL | |
| salary | decimal(8,2) | YES | | NULL | |
| commission_pct | decimal(2,2) | YES | | NULL | |
| manager_id | decimal(6,0) | YES | | NULL | |
| department_id | decimal(4,0) | YES | | NULL | |
+----------------+--------------+------+-----+---------+-------+
和错误
ERROR 1327 (42000) at line 3: Undeclared variable: employee_id
尝试改变
select MAX(sl) into sal1, employee_id into empH
至
select MAX(sl), employee_id into sal1, empH
into 之后的所有内容都需要是一个变量,并且只需要使用一次。