• 发现美的眼睛 Prepared SQL Statement


      1 DROP PROCEDURE IF EXISTS truncate_insert_sales_rank_toparow_month;
      2 DELIMITER /w/
      3 CREATE PROCEDURE truncate_insert_sales_rank_toparow_month ()
      4 BEGIN
      5 TRUNCATE sales_rank_toparow_month ;
      6 INSERT INTO sales_rank_toparow_month (
      7     fk_country,
      8     fk_categoryid,
      9     history_year,
     10     history_month
     11 ) SELECT
     12     country,
     13     categoryid,
     14     history_year,
     15     history_month
     16 FROM
     17     grab_sales_rank_month
     18 GROUP BY
     19     country,
     20     categoryid,
     21     history_year,
     22     history_month ;
     23 END/w/
     24 DELIMITER;
     25 CALL truncate_insert_sales_rank_toparow_month;
     26 
     27 DROP PROCEDURE IF EXISTS insert_update_sales_rank_toparow_month;
     28 DELIMITER /w/
     29 CREATE PROCEDURE insert_update_sales_rank_toparow_month ()
     30 BEGIN
     31 SET @wtab = ' sales_rank_toparow_month al ';
     32 SET @w = 10;
     33 WHILE @w < 110 DO
     34     SET @wfield = CONCAT('coin',@w);
     35     SET @wnewvalue = CONCAT('(SELECT sum_coin FROM grab_sales_rank_month da  WHERE  al.fk_country = da.country  AND al.fk_categoryid = da.categoryid   AND al.history_year = da.history_year  AND al.history_month = da.history_month  AND da.topx=',@w,')');
     36     SET @wfieldb = CONCAT('amount',@w);
     37     SET @wnewvalueb = CONCAT('(SELECT sum_amount FROM grab_sales_rank_month da  WHERE  al.fk_country = da.country  AND al.fk_categoryid = da.categoryid   AND al.history_year = da.history_year  AND al.history_month = da.history_month  AND da.topx=',@w,' )');
     38     SET @wpre = CONCAT('UPDATE ',@wtab,' SET ',@wfield,'=',@wnewvalue,',',@wfieldb,'=',@wnewvalueb);
     39     PREPARE  stmt FROM @wpre ;
     40     EXECUTE  stmt  ;
     41     DROP PREPARE stmt;
     42 SET @w = @w + 10 ;
     43 END
     44 WHILE ;
     45 END/w/
     46 DELIMITER ;
     47 CALL insert_update_sales_rank_toparow_month;
     48 
     49 
     50 
     51 
     52 
     53 DROP PROCEDURE IF EXISTS truncate_insert_sales_rank_toparow_week;
     54 DELIMITER /w/
     55 CREATE PROCEDURE truncate_insert_sales_rank_toparow_week ()
     56 BEGIN
     57 TRUNCATE sales_rank_toparow_week ;
     58 INSERT INTO sales_rank_toparow_week (
     59     fk_country,
     60     fk_categoryid,
     61     history_year,
     62     history_week
     63 ) SELECT
     64     country,
     65     categoryid,
     66     history_year,
     67     history_week
     68 FROM
     69     grab_sales_rank_week
     70 GROUP BY
     71     country,
     72     categoryid,
     73     history_year,
     74     history_week ;
     75 END/w/
     76 DELIMITER;
     77 CALL truncate_insert_sales_rank_toparow_week;
     78 
     79 DROP PROCEDURE IF EXISTS insert_update_sales_rank_toparow_week;
     80 DELIMITER /w/
     81 CREATE PROCEDURE insert_update_sales_rank_toparow_week ()
     82 BEGIN
     83 SET @wtab = ' sales_rank_toparow_week al ';
     84 SET @w = 10;
     85 WHILE @w < 110 DO
     86     SET @wfield = CONCAT('coin',@w);
     87     SET @wnewvalue = CONCAT('(SELECT sum_coin FROM grab_sales_rank_week da  WHERE  al.fk_country = da.country  AND al.fk_categoryid = da.categoryid   AND al.history_year = da.history_year  AND al.history_week = da.WeekValue  AND da.topx=',@w,' )');
     88     SET @wfieldb = CONCAT('amount',@w);
     89     SET @wnewvalueb = CONCAT('(SELECT sum_amount FROM grab_sales_rank_week da  WHERE  al.fk_country = da.country  AND al.fk_categoryid = da.categoryid   AND al.history_year = da.history_year  AND al.history_week = da.WeekValue  AND da.topx=',@w,' )');
     90     SET @wpre = CONCAT('UPDATE ',@wtab,' SET ',@wfield,'=',@wnewvalue,',',@wfieldb,'=',@wnewvalueb);
     91     PREPARE  stmt FROM @wpre ;
     92     EXECUTE  stmt  ;
     93     DROP PREPARE stmt;
     94 SET @w = @w + 10 ;
     95 END
     96 WHILE ;
     97 END/w/
     98 DELIMITER ;
     99 CALL insert_update_sales_rank_toparow_week;
    100 
    101 
    102 
    103 
    104 
    105 DROP PROCEDURE IF EXISTS truncate_insert_sales_rank_toparow_all;
    106 DELIMITER /w/
    107 CREATE PROCEDURE truncate_insert_sales_rank_toparow_all ()
    108 BEGIN
    109 TRUNCATE sales_rank_toparow_all ;
    110 INSERT INTO sales_rank_toparow_all (
    111     fk_country,
    112     fk_categoryid
    113 ) SELECT
    114     country,
    115     categoryid
    116 FROM
    117     grab_sales_rank_all
    118 GROUP BY
    119     country,
    120     categoryid;
    121 END/w/
    122 DELIMITER;
    123 CALL truncate_insert_sales_rank_toparow_all;
    124 
    125 DROP PROCEDURE IF EXISTS insert_update_sales_rank_toparow_all;
    126 DELIMITER /w/
    127 CREATE PROCEDURE insert_update_sales_rank_toparow_all ()
    128 BEGIN
    129 SET @wtab = ' sales_rank_toparow_all al ';
    130 SET @w = 10;
    131 WHILE @w < 110 DO
    132     SET @wfield = CONCAT('coin',@w);
    133     SET @wnewvalue = CONCAT('(SELECT sum_coin FROM grab_sales_rank_all da  WHERE  al.fk_country = da.country  AND al.fk_categoryid = da.categoryid AND da.topx=',@w,')');
    134     SET @wfieldb = CONCAT('amount',@w);
    135     SET @wnewvalueb = CONCAT('(SELECT sum_amount FROM grab_sales_rank_all da  WHERE  al.fk_country = da.country  AND al.fk_categoryid = da.categoryid AND da.topx=',@w,')');
    136     SET @wpre = CONCAT('UPDATE ',@wtab,' SET ',@wfield,'=',@wnewvalue,',',@wfieldb,'=',@wnewvalueb);
    137     PREPARE  stmt FROM @wpre ;
    138     EXECUTE  stmt  ;
    139     DROP PREPARE stmt;
    140 SET @w = @w + 10 ;
    141 END
    142 WHILE ;
    143 END/w/
    144 DELIMITER ;
    145 CALL insert_update_sales_rank_toparow_all;
     1 DROP PROCEDURE
     2 IF EXISTS `prepare_update`;
     3 DELIMITER /w/
     4 
     5 
     6 CREATE PROCEDURE `prepare_update` ()
     7 BEGIN
     8 
     9 SET @wtab = ' wtable ' ;
    10 SET @w = 10 ;
    11 WHILE @w < 40 DO
    12 
    13 SET @wfield = CONCAT('coin' ,@w) ;
    14 SET @wnewvalue = @w + 1 ;
    15 SET @wpre = CONCAT(
    16     'UPDATE ' ,@wtab,
    17     ' SET ' ,@wfield,
    18     '=' ,@wnewvalue
    19 ) ; 
    20 PREPARE stmt FROM @wpre ; 
    21 EXECUTE stmt ; 
    22 DROP PREPARE stmt ;
    23 SET @w = @w + 10 ;
    24 END
    25 WHILE ;
    26 END/w/
    27 DELIMITER ;
    28 
    29 
    30 CALL `prepare_update`;

    http://dev.mysql.com/doc/refman/5.7/en/sql-syntax-prepared-statements.html

    1 CREATE TABLE t1 (a INT NOT NULL);
    2 INSERT INTO t1 VALUES (4), (8), (11), (32), (80);
    3 SET @table = 't1';
    4 SET @s = CONCAT('SELECT * FROM ', @table);
    5 PREPARE stmt3 FROM @s;
    6 EXECUTE stmt3;
    1 SET @s = 'SELECT SQRT(POW(?,2) + POW(?,2)) AS hypotenuse';
    2 PREPARE stmt2 FROM @s;
    3 SET @a = 6;
    4 SET @b = 8;
    5 EXECUTE stmt2 USING @a, @b;
    1 PREPARE stmt1 FROM 'SELECT SQRT(POW(?,2) + POW(?,2)) AS hypotenuse';
    2 SET @a = 3;
    3 SET @b = 4;
    4 EXECUTE stmt1 USING @a, @b;
    5 SHOW VARIABLES LIKE '%a%';
  • 相关阅读:
    【应用安全】mssql db_owner权限拿shell
    【应用安全——XSS】input-hidden
    留言板
    Git配置多个SSH-Key
    13.InternalThreadLocalMap
    10.ChannelOutboundBuffer
    9.ChannelHandlerContext
    8.Future&Promise
    7.给大动脉来一刀-NioEventLoop 源码分析
    6.给大动脉来一刀
  • 原文地址:https://www.cnblogs.com/rsapaper/p/6229302.html
Copyright © 2020-2023  润新知