mysql创建存储过程

创建:(如果不加 delimiter //  有多少个declare就会报多少个You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 3,原因请查询官方文档)

mysql> delimiter //

mysql> create procedure pr_a(a int, b int)
    -> begin
    -> declare c int;
    -> set c=a+b;
    -> select c as num;

    -> end //

调用:

call pr_a(2,3);
+------+
| num  |
+------+
|    5 |
+------+


example:

drop procedure if exists create_comment;
DELIMITER $$
CREATE
  PROCEDURE create_comment()
  BEGIN


     DECLARE i INT;
     DECLARE table_name VARCHAR(20); 
     DECLARE table_pre VARCHAR(20); 
     DECLARE sql_text VARCHAR(2000); 
     DECLARE drop_text VARCHAR(2000); 
     SET i=0;
     SET table_name='';
     SET table_pre='comment_video_pid_';
     SET sql_text='';
     SET drop_text='';
     WHILE i<2 DO
      IF i<10 THEN SET table_name=CONCAT(table_pre,'0',i);
      ELSE SET table_name=CONCAT(table_pre,i);
      END IF;


      SET drop_text = CONCAT('DROP TABLE IF EXISTS ', table_name);
      SET @drop_text=drop_text;
      PREPARE drop_stmt FROM @drop_text;
      EXECUTE drop_stmt;
      DEALLOCATE PREPARE drop_stmt;


      SET sql_text=CONCAT('CREATE TABLE `', table_name, '` (
 `id` varchar(30) NOT NULL COMMENT \'id\',
          `ssouid` bigint(10) NOT NULL COMMENT \'用户id\',
          PRIMARY KEY (`id`)
        ) ENGINE=INNODB DEFAULT CHARSET=utf8;');
        
      SELECT sql_text; 
      SET @sql_text=sql_text;
      PREPARE stmt FROM @sql_text;
      EXECUTE stmt;
      DEALLOCATE PREPARE stmt;  
      SET i=i+1;
    END WHILE;


  END $$
      
DELIMITER ;
call create_comment();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值