MYSQL存储过程

注意:delimter $$声明一个结束符,否则以;为结束符

主意:在SQL语句中声明变量且进行赋值时要使用default

1.变量及赋值

局部变量:用户自定义,在begin/end块中有效

声明变量:declare var_name type [default var_value]

举例:declare nickname varchar(32);

--set 赋值      --into赋值

用户变量:用户自定义,当前会话(连接)有效。类比java的成员变量

语法:@var_name,不需要提前声明,使用即声明

会话变量:由系统提供,当前会话连接有效

语法:@@session.var_name

全局变量:由系统提供,整个mysql的服务有效

语法:@@global.var_name

2.入参出参

in|out | inout param_name type

3.流程控制

3.1判断

IF语法:

IF search_condition THEN statement_list

    [ELSEIF search_condition THEN statement_list]...

    [ELSE statement_list]

END IF

CASE语法:此语法不仅可以用在存储过程,查询语句也可以用

语法—(类比java的switch)

CASE case_value

      WHEN when_value THEN statement_list

      [WHEN when_value THEN statement_list]...

      [ELSE statment_list]

END CASE

语法二

CASE

      WHEN search_condition THEN statement_list

      [WHEN search_condition THEN statement_list]...

      [ELSE statement_list]

END CASE

3.2循环

loop循环:  死循环

【begin_label:】LOOP

        statement_list

END LOOP [end_label]

说明:loop是死循环,需要手动退出循环,我们可以使用leave来退出

repeat循环:

【begin_label:】 REPEAT

      statement_list

UNTIL  search_condition  --直到...为止

END REPEAT [end_label]

while循环(类比java的while(){}):

[begin_label:] WHILE search_condition DO

      statement_list

END WHILE [end_lable]

3.3流程控制-退出、继续、循环

leave    相当于java中的break

iterate  相当于java中的continue

4.游标

用游标得到某一个结果集,逐行处理数据

类比jdbc的ResultSet

--声明语法

DECLARE cursor_name CURSOR FOR select_statement

--打开语法

OPEN cursor_name

--取值语法

FETCH cursor_name INTO var_name[,var_name]...

--关闭语法

CLOSE cursor_name

5.存储过程中的handler

语法:DECLARE handler_action HANDLER

                    FOR condition_value[,condition_value]...

                    statement

handler_action:{

CONTINUE | EXIT | UNDO

}

condition_value{

mysql_erroe_code

| SQLSTATE [VALUE] sqlstate_value

| condition_name

| SQLWARNING

| NOT FOUND

| SQLEXCEPTION

}

特别注意:在语法中,变量声明、游标声明、handler声明必须按照先后顺序写的,否则创建存储过程出错

注意:字符串拼接SQL语句需要预编译,当在mysql中使用prepare预编译拼接的字符串时不可以使用局部变量

创建临时表收集数据使用:create temporary table

`table_name`(字段)COLLATE = 'utf8_general_ci'

ENGINE=InnoDB;

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,490评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,581评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,830评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,957评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,974评论 6 393
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,754评论 1 307
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,464评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,357评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,847评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,995评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,137评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,819评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,482评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,023评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,149评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,409评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,086评论 2 355

推荐阅读更多精彩内容