zoukankan      html  css  js  c++  java
  • prepare statement

    存储过程是这样写的

    DELIMITER //
    DROP PROCEDURE IF EXISTS sp_login_info_query//
    CREATE PROCEDURE sp_login_info_query(IN v_login_id_str VARCHAR(10000))
    BEGIN
      SELECT v_login_id_str;
      SELECT * FROM `login_info` WHERE login_id IN (v_login_id_str);
    END
    //
    DELIMITER ;

    想得到下面的结果

    SELECT * FROM `login_info` WHERE login_id IN (23694,23695,23697);
    login_id  user_id  login_type  login_ip     login_date           login_result  
    --------  -------  ----------  -----------  -------------------  --------------
       23694    14829           1  220.231.2.3  2014-11-22 11:12:11               0
       23695    14830           1               2014-11-22 11:14:52               0
       23697    14831           1               2014-11-22 11:25:13               0

    但是发现确实下面这种效果,居然只返回一条

    CALL sp_login_info_query('23694,23695,23697');
    v_login_id_str     
    -------------------
    23694,23695,23697  
    
    login_id  user_id  login_type  login_ip     login_date           login_result  
    --------  -------  ----------  -----------  -------------------  --------------
       23694    14829           1  220.231.2.3  2014-11-22 11:12:11               0

    这时prepare statement强大的功能就该派上用场了

    DELIMITER //
    DROP PROCEDURE IF EXISTS sp_login_info_query//
    CREATE PROCEDURE sp_login_info_query(IN v_login_id_str VARCHAR(10000))
    BEGIN
      SET @v_sql=CONCAT('SELECT * FROM `login_info` WHERE login_id IN (',v_login_id_str,');');
      PREPARE stmt1 FROM @v_sql;
      EXECUTE stmt1;
      DEALLOCATE PREPARE stmt1;
    END
    //
    DELIMITER ;

    测一把

    CALL sp_login_info_query('23694,23695,23697')
    login_id  user_id  login_type  login_ip     login_date           login_result  
    --------  -------  ----------  -----------  -------------------  --------------
       23694    14829           1  220.231.2.3  2014-11-22 11:12:11               0
       23695    14830           1               2014-11-22 11:14:52               0
       23699    14828           1               2014-11-22 11:33:00               1

    完美!

  • 相关阅读:
    MongoDB 集合上限说明
    MongoDB mtools-你可能没用过的mongodb神器(转载)
    Redis 你知道 Redis 的字符串是怎么实现的吗?(转载)
    Mongoimport 导数据自动去重
    MongoDB 数据类型
    MongoDB 数据类型整理
    MongoDB mongoimport 时间格式处理
    MongoDB 空值数组查询
    MongoDB WiredTiger 存储引擎cache_pool设计(转载)
    MongoDB运维实战lsm降低Disk Lantency(转载)
  • 原文地址:https://www.cnblogs.com/geek-ace/p/9525501.html
Copyright © 2011-2022 走看看