mysql 存储过程中游标,变量用于字段名,表名时的示例

本文介绍了一个MySQL存储过程`randstutest`,它遍历`sys_itemlist`中的测试项,为每个sid生成一个0到100之间的随机数并更新stutest表。
摘要由CSDN通过智能技术生成

CREATE DEFINER=`root`@`%` PROCEDURE `randstutest`()
BEGIN
        DECLARE    v_finished INTEGER DEFAULT 0;
    DECLARE    ssid VARCHAR ( 100 ) DEFAULT "";
    DECLARE    sname VARCHAR ( 100 ) DEFAULT "";
    DECLARE    item_cursor CURSOR FOR SELECT        sid,    NAME     FROM        sys_itemlist     WHERE        en = 1     AND testView = 1;
    -- declare NOT FOUND handler
    DECLARE    CONTINUE HANDLER FOR NOT FOUND         SET v_finished = 1;
    OPEN item_cursor;
    itemloop :
    LOOP
            FETCH item_cursor INTO ssid,    sname;
        IF    v_finished = 1 THEN
                LEAVE itemloop;
        END IF;
        -- 变量用于字段名,表名时,必须 用以下方式 --
        SET @sqlStr:=CONCAT('UPDATE stutest SET ', ssid, ' = RAND() * 100');
    PREPARE stmt from @sqlStr;
    EXECUTE stmt;
    DEALLOCATE PREPARE stmt;  
        
    END LOOP itemloop;
CLOSE item_cursor;

END

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值