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

    完美!

  • 相关阅读:
    python 文本相似度计算
    文本分析:停用词集
    浅谈RPC框架
    主动测试 -- 如何让执行测试的过程更流畅?
    非常好用的1款UI自动化测试工具:airTest
    Jmeter JSON断言和响应断言的区别是什么?
    monkey测试环境搭建 及 操作步骤
    如何通过优化测试流程,优化测试时间?
    POST请求成功,但接口返回数据不正确
    fiddler抓包 IOS11以上系统
  • 原文地址:https://www.cnblogs.com/geek-ace/p/9525501.html
Copyright © 2011-2022 走看看