必须创建临时表以在过程中查看

时间:2016-03-11 07:27:07

标签: mysql stored-procedures oracle11g cursor temp-tables

程序摘要:我创建了一个游标并提取了数据并插入到我在db中创建的表mm_dummy_table中。 我不希望将数据存储在已创建的表中,应该为该时刻创建临时表,它应该消失。请帮助创建一个临时表来查看我在cursor中提取的数据。我可以只获得名字中没有A的人,而不使用user_username喜欢'%a%'。请帮助我的条件这个..

DELIMITER //

CREATE DEFINER=root@localhost PROCEDURE PRO_ABC_DUMMY()
BEGIN
    declare v_user_id int;
    declare v_username varchar(100);
    declare dummy_cur cursor for
    SELECT user_id, user_fullname
    FROM m_users
    WHERE User_FullName LIKE '%a%';

    open dummy_cur;

    BLOCK1:BEGIN
        DECLARE EXIT HANDLER FOR NOT FOUND BEGIN END;
        LOOP1:LOOP
            fetch dummy_cur into v_user_id, v_username;
            insert into mm_users_dummy (user_id, user_name)
            values
            (v_user_id, v_username);
        END LOOP loop1;
    END BLOCK1;

    CLOSE dummy_cur;
END//

DELIMITER ;

1 个答案:

答案 0 :(得分:0)

BEGIN     DECLARE v_user_id INT;     DECLARE v_username VARCHAR(100);     DECLARE dummy_cur CURSOR FOR     SELECT user_id,user_fullname     来自m_users     WHERE User_FullName LIKE'%a%&#39 ;;

CREATE TEMPORARY TABLE `mtest`(  

user_id INT(11)NOT NULL AUTO_INCREMENT,   user_name VARCHAR(50),   主要关键(user_id) );

OPEN dummy_cur;

BLOCK1:BEGIN
    DECLARE EXIT HANDLER FOR NOT FOUND BEGIN END;
    LOOP1:LOOP
        FETCH dummy_cur INTO v_user_id, v_username;
        INSERT INTO mtest (user_id, user_name)
        VALUES
        (v_user_id, v_username);
    END LOOP loop1;
END BLOCK1;

CLOSE dummy_cur;

SELECT * FROM mtest;
END$$