我正在尝试找出一项作业。文字是:
编写一个存储函数,该函数将返回课程ID,其中课程名称包含给定的参数模式字符串。您必须使用LIKE进行模式匹配。请参阅课程表。
如果输入了诸如Z之类的字符,但不在课程名称中,则应显示:找不到记录
如果输入为空白:请输入有效的字符串
如果输入为NULL:请输入有效的字符串
如果输入为J:CPS1231,CPS2231
课程表
cid | name
--------+------------------
CPS1231 | Java1
CPS2231 | Java2
CPS2232 | Data Structure
这是我到目前为止所拥有的:
CREATE FUNCTION `Work` ()
RETURNS INTEGER
BEGIN
declare msg varchar(20) default '';
if ((name is null) or (name='')) then
select "Please input a valid string" as message;
else
select group_concat(name) into msg from dreamhome.Courses where name like '%,_name%';
elseif ((msg='') or (msg is null)) then
select group_concat(" is not in the system") as message;
else
select distinct cid from dreamhome.Courses;
end if;
end if;
我不确定从这里去哪里。
答案 0 :(得分:0)
CREATE FUNCTION get_id(NAME IN
Courses.NAME%TYPE ,COURSE_ID_O[] OUT ARRAY )
RETURN COURSE_ID_O
BEGIN
IF NAME LIKE '_J%' OR NAME LIKE '_Z%'
THEN
SELECT COURSE_ID INTO COURSE_ID_O FROM
COURSES WHERE COURSE_NAME=NAME ;
ELIF NAME='' OR NAME=NULL
THEN
DBMS_OUTPUT.PUT_LINE('Please enter a valid string.');
END IF
EXCEPTION
WHEN NO_DATA_FOUND THEN
DBMS_OUTPUT.PUT_LINE('No record found If it is blank
or null: Please input a valid string');
END EXCEPTION
END
您可能会引用正确的语法,但是对于上面的一般情况,这意味着函数get_id将采用名称,并将返回course_id_o数组,因为如果输入的课程名称为J,则其中有多行为O / p,则它将打印其他默认错误消息。