我在学生表中为我的数据库创建了两列。我现在需要为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 ;
答案 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>