• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

[转]mysql存储过程学习小结

mysql 搞代码 7年前 (2018-06-03) 121次浏览 已收录 0个评论

[转]mysql存储过程学习总结
1.基本语法:call sp_name()
create procedure 存储过程名字()  
(  
[in|out|inout] 参数 datatype  
)  
begin  
MySQL 语句;  
end;
MySQL 存储过程中的变量,不需要在变量名字前加“@”,虽然 MySQL 客户端用户变量要加个“@”。

drop procedure sp_name//

1.区块定义,常用
begin
……
end;
也可以给区块起别名,如:
lable:begin
………..
end lable;
可以用leave lable;跳出区块,执行区块以后的代码
2.条件语句
if 条件 then
statement
else
statement
end if;

3.循环语句
(1).while循环
[label:] WHILE expression DO
statements
END WHILE [label] ;

(2).loop循环
[label:] LOOP
statements
END LOOP [label];

(3).repeat until循环
[label:] REPEAT
statements
UNTIL expression
END REPEAT [label] ;

1.show procedure status
显示数据库中所有存储的存储过程基本信息,包括所属数据库,存储过程名称,创建时间等
2.show create procedure sp_name
显示某一个存储过程的详细信息

 drop procedure if exists pr_statis_rows; create procedure pr_statis_rows(        db1 varchar(50),        db2 varchar(50)    )    begin    DECLARE done INT DEFAULT 0; declare tempTableName varchar(50); declare stmt varchar(2000);  DECLARE cur CURSOR FOR select table_name from INFORMATION_SCHEMA.TABLES where table_type='BASE TABLE' and table_schema=db1; DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;  create TEMPORARY table IF NOT EXISTS  ecard_row (table_name varchar(50), rows_ int, table_name2 varchar(50), rows_2 int);   -- 打开 /* select db1;  */ # 打印db1  OPEN cur;  REPEAT     FETCH cur INTO tempTableName;     if tempTableName<>'ecard_row' then       IF NOT done THEN          set @c1=0;                set @c2=0;                  set @sql = concat('select count(*) from ', db1 ,'.', tempTableName, ' into @c1');                set @sql2 = concat('select count(*) from ', db2 ,'.', tempTableName, ' into @c2');            prepare stmt from @sql;            execute stmt;                 prepare stmt from @sql2;            execute stmt;            Insert ecard_row values (tempTableName, @c1, tempTableName, @c2);         END IF;     end if;      UNTIL done END REPEAT;      CLOSE  cur; # 不能有return  end;   delete from ecard.ecard_row; # 不能省略参数 call ecard.pr_statis_rows('aa','bb'); select * from ecard.ecard_row  show procedure status 

欢迎大家阅读mysql存储过程学习小结》,跪求各位点评,by 搞代码


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:[转]mysql存储过程学习小结

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址