存储过程以从数据库中获取整行

问题描述

我是MYSQL的初学者,目前正在练习存储过程。我正在尝试创建一个过程,当给定输入参数时,该过程应该获取整个字段的一行。有什么解决方法吗?如果是的话,那将是一个巨大的帮助。

非常感谢

解决方法

欢迎来到论坛。

存储过程可以简单地由SELECT语句组成,该语句返回所需行中的所有列。例如

    CREATE PROCEDURE `myproc`(IN `p_id` INT(11))
    READS SQL DATA 
    SELECT id,COL2,COL3,ETC
    FROM `mytable`
    WHERE id = 'p_id';

如果需要遍历表,查看满足某些条件的每一行,则需要对“游标”进行DECLARE,然后使用该游标来获取所需的行。这是我用来创建需要遍历表的新过程的模板-可以对其进行调整以满足您的需求。在此模板中,我仅从游标中检索两列,但您可以检索任何数字。您必须为SELECT中的每一列声明一个局部变量,以便FETCH语句在某处放置它从游标中检索到的数据:

    CREATE PROCEDURE `traverse_table`()
        READS SQL DATA
    BEGIN
        DECLARE var_id INT(11) UNSIGNED;
        DECLARE var_data varchar(16383);
        DECLARE done INT DEFAULT FALSE;
        DECLARE ecode varchar(1000) ;
        DECLARE emsg varchar(1000) ;
        DECLARE nextrecord CURSOR FOR   # here is the CURSOR DECLARATION
               SELECT `myid`,`mydata`     # It will return these rows,one
               FROM `mytable`           # at a time 
               WHERE `mydata` LIKE "ABC%";
        DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
        DECLARE CONTINUE HANDLER FOR SQLEXCEPTION 
        BEGIN
            GET DIAGNOSTICS CONDITION 1 ecode = RETURNED_SQLSTATE,emsg = MESSAGE_TEXT;
            SELECT  var_id,var_data,ecode,emsg; 
        END;
        OPEN nextrecord;    
        FETCH nextrecord into var_id,var_data; # here is the first Fetch
        WHILE (done = FALSE) DO 
            # >>>>>> do something with var_id,var_data here <<<<<<
            SET done = FALSE;
            FETCH NEXT FROM records into var_id,var_data; # here is the second and subsequent Fetch
        END WHILE;
        CLOSE nextrecord;
    END

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...