需要帮助编写case语句 - MySQL Cursor

时间:2016-05-26 09:36:50

标签: mysql mysql-workbench

我在学生表中为我的数据库创建了两列。我现在需要为student表创建一个游标。我需要利用开始和结束学生ID的输入参数来过滤游标查询中的结果。 我还需要打开创建的光标并检查学生是否分配了电子邮件。如果未分配电子邮件,我需要更新电子邮件列以将电子邮件分配给学生。

最后为什么我需要帮助: 我无法弄清楚如何编写此游标的case语句。我试图想出一个很好的方法来做到这一点并没有成功。请帮忙!!

DELIMITER $

DROP PROCEDURE IF EXISTS CURSOR_DEMO$

CREATE PROCEDURE CURSOR_DEMO(start_student_id   INT
                            ,end_student_id     INT
                            ) 
BEGIN

DECLARE l_table_name    VARCHAR(50);
DECLARE iam_done    INT DEFAULT 0;
DECLARE l_sql_stmt  VARCHAR(5000);


 SET @l_sql_stmt='ALTER TABLE STUDENT ADD EMAIL VARCHAR';
    SELECT @l_sql_stmt;
    prepare stmt from @l_sql_stmt;
    execute stmt;


 SET @l_sql_stmt='ALTER TABLE STUDENT ADD PHONE int(10)';
    SELECT @l_sql_stmt;
    prepare stmt from @l_sql_stmt;
    execute stmt;

 DECLARE TBL_CUR CURSOR FOR
    SELECT EMAIL FROM STUDENT.TABLES WHERE TABLE_SCHEMA='MYSQLDB';



BEGIN

DECLARE CONTINUE HANDLER FOR NOT FOUND SET IAM_DONE=1;



    OPEN TBL_CUR;



        tbl_loop:LOOP
            FETCH tbl_cur INTO l_table_name;        

                IF IAM_DONE = 1 THEN

                    LEAVE tbl_loop;

                END IF;


                CASE WHEN l_table_name = 'STUDENT' THEN



                ELSE BEGIN END;                     


                END CASE;                       



        END LOOP tbl_loop;

    CLOSE TBL_CUR;

END;

END$

DELIMITER ;

1 个答案:

答案 0 :(得分:0)

这是你需要的东西吗?

<test xmlns="Dummy" xmlns:abc="SomeTestUri">
  <abc:test>1</abc:test>
  <anotherOne>2</anotherOne>
  <abc:symbol abc:id="1">Test 1</abc:symbol>
  <abc:symbol abc:id="2">Test 2</abc:symbol>
  <abc:symbol abc:id="3">Test 3</abc:symbol>
  <abc:symbol abc:id="4">Test 4</abc:symbol>
</test>