我有一个查询,我需要同样的查询 不使用 IN 运算符
这里是查询
create function registerStudent(
in s_id varchar(5),
in s_courseid varchar (8),
in s_secid varchar (8),
in semester varchar (6),
in s_year numeric (4,0),
out errorMsg varchar(100) returns integer
begin
declare currEnrol int;
select count(*) into currEnrol from takes
where course_id = s_courseid
and secid = s_secid
and semester = s_semester
and year = s_year;
declare limit int;
select capacity into limit
from classroom
natural join section
where course_id = s_courseid
and secid = s_secid
and semester = s_semester
and year = s_year;
if (currEnrol < limit) begin
insert into takes values (s_id, s_courseid, s_secid, s_semester, s_year, null);
return(0);
end
set errorMsg = 'Enrollment limit reached for course ' I I s_courseid II ' section ' I I s_secid;
return(-1);
end;
最佳答案
在括号内列出存储函数的所有参数。默认情况下,所有参数都是 IN
参数。您不能为参数指定 IN 、 OUT 或 INOUT
修饰符。
create function registerStudent(
s_id varchar(5),
s_courseid varchar (8),
s_secid varchar (8),
semester varchar (6),
s_year numeric (4,0),
out errorMsg varchar(100)
) returns integer
begin
declare currEnrol int;
select count(*) into currEnrol from takes
where course_id = s_courseid
and secid = s_secid
and semester = s_semester
and year = s_year;
declare limit int;
select capacity into limit
from classroom
natural join section
where course_id = s_courseid
and secid = s_secid
and semester = s_semester
and year = s_year;
if (currEnrol < limit) begin
insert into takes values (s_id, s_courseid, s_secid, s_semester, s_year, null);
return(0);
end
set errorMsg = 'Enrollment limit reached for course ' I I s_courseid II ' section ' I I s_secid;
return(-1);
end;
关于mysql - 查询中函数的 IN 运算符的替代或替换 IN 运算符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35838199/