使用Workbench正确格式化SQL函数

时间:2018-11-22 20:21:05

标签: mysql sql function mysql-workbench

我正在尝试找出一项作业。文字是:

  

编写一个存储函数,该函数将返回课程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;

我不确定从这里去哪里。

1 个答案:

答案 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,则它将打印其他默认错误消息。