TOP:BEGIN
#Routine body goes here... IF EXISTS
(
SELECT * FROM `global_account`
WHERE `plantform_id` = in_plantform_id
AND `plantform_sub_id` = in_plantform_sub_id
AND `account` = in_account
) THEN
SELECT -1 AS RET;
LEAVE TOP;
END IF; INSERT INTO `global_account` SET
`plantform_id` = in_plantform_id,
`plantform_sub_id` = in_plantform_sub_id,
`account` = in_account,
`password` = in_password,
`register_time` = NOW()
; SELECT 0 AS RET, LAST_INSERT_ID() AS user_id; END

将这个存储过程解释一下

IF EXISTS()其实看select能不能有数据,如果有数据就是true否则就是false
 LEAVE TOP;就是从存储过程返回,这个TOP是自己加上去的,默认是没有的
SELECT 0 AS RET, LAST_INSERT_ID() AS user_id;结果集,RET就是返回结果,一般MySQL0是表示成功,LAST_INSERT_ID()表示上一条insert插入的id,将这两个值作为存储过程的返回值。
BEGIN
#Routine body goes here...
DECLARE var_user_id INT DEFAULT NULL;
DECLARE var_password VARCHAR(255) DEFAULT ""; SELECT `user_id`, `password` INTO var_user_id, var_password FROM `global_account`
WHERE `plantform_id` = in_plantform_id
AND `plantform_sub_id` = in_plantform_sub_id
AND `account` = in_account
#AND `password` = in_password
; IF ISNULL(var_user_id) THEN #没有这个用户时
INSERT INTO `global_account`
SET `plantform_id` = in_plantform_id,
`plantform_sub_id` = in_plantform_sub_id,
`account` = in_account,
`password` = in_password,
`register_time` = NOW()
; SELECT 0 AS RET, LAST_INSERT_ID() AS user_id;
ELSE
IF var_password = in_password THEN
SELECT 0 AS RET, var_user_id AS user_id;
ELSE
SELECT -1 AS RET;
END IF;
END IF; END

 
 

e_msg_c_as_register_req-注册存储过程的更多相关文章

  1. 存储过程详解与java调用(转)

    存储过程的一些基本语法: --------------创建存储过程----------------- CREATE PROC [ EDURE ] procedure_name [ ; number ] ...

  2. J2EE之oracle、mysql存储过程调用

    最近几天在研究hibernate.JPA对存储过程的调用,主要是针对有返回结果集的存储过程的调用方法,个人感觉存储过程是个好东西,虽然说heibernate对数据访问封装的比较不错,再加上他的缓存机制 ...

  3. Oracle存储过程的调用(返回参数)

    CREATE OR REPLACE PROCEDURE test_in_out_exception (v_empno VARCHAR2,v_guess_sal NUMBER,v_true_sal OU ...

  4. Oracle存储过程创建及调用(转)

    在大型数据库系统中,有两个很重要作用的功能,那就是存储过程和触发器.在数据库系统中无论是存储过程还是触发器,都是通过SQL 语句和控制流程语句的集合来完成的.相对来说,数据库系统中的触发器也是一种存储 ...

  5. Java对存储过程的调用方法 --转载

    一.Java如何实现对存储过程的调用: A:不带输出参数的 create procedure getsum <--此处为参数--> as declare @sum int<--定义变 ...

  6. java 调用mysql的存储过程(简单示例)

    首先我在mysql的test数据库里定义了一个student表: create table student4( id   int   primary key, sanme char(5) ); 插入几 ...

  7. SQL Server CLR 使用 C# 自定义存储过程和触发器

    资源来源:https://www.cnblogs.com/Brambling/p/8016060.html SQL Server CLR 使用 C# 自定义存储过程和触发器   这一篇博客接着上一篇博 ...

  8. Oracle存储过程创建及调用

    在大型数据库系统中,有两个很重要作用的功能,那就是存储过程和触发器.在数据库系统中无论是存储过程还是触发器,都是通过SQL 语句和控制流程语句的集合来完成的.相对来说,数据库系统中的触发器也是一种存储 ...

  9. JAVA对存储过程的调用方法(本文源于网络)

    博客分类: java java存储过程sql  一:Java如何实现对存储过程的调用:   A:不带输出参数的   ---------------不带输出参数的-------------------- ...

  10. 提高你的数据库编程效率:Microsoft CLR Via Sql Server

    你还在为数据库编程而抓狂吗?那些恶心的脚本拼接,低效的脚本调试的日子将会与我们越来越远啦.现在我们能用支持.NET的语言来开发数据库中的对象,如:存储过程,函数,触发器,集合函数已及复杂的类型.看到这 ...

随机推荐

  1. 请问-bash-4.1$ 出现故障的原理及解决办法?

    请问如下登录环境故障的原理及解决办法? [root@ ~]# su - luoahong -bash-4.1$ -bash-4.1$ 解答: [luoahong@ ~]$ rm -rf /home/l ...

  2. Android下的数据储存方式(三)

      Android下最好的数据储存方式:关系型数据库sqlite.   数据库的创建:使用SqliteOpenHelper类 结合SqliteOpenHelper类和SQLiteDatabase类的帮 ...

  3. android获得图片

    首先是相册图片的获取: private final String IMAGE_TYPE = "image/*"; private final int IMAGE_CODE = 0; ...

  4. RabbitMQ 路由选择 (Routing)

    让日志接收者能够订阅部分消息.例如,我们可以仅仅将致命的错误写入日志文件,然而仍然在控制面板上打印出所有的其他类型的日志消息. 1.绑定(Bindings) 在前面中我们已经使用过绑定.类似下面的代码 ...

  5. MySql数据类型问题

    1. mysql时间函数 DATE_ADD(now(), INTERVAL 1 DAY) AS tomorrow DATE_SUB(now(), INTERVAL 1 DAY) AS yesterda ...

  6. Java--剑指offer(4)

    16.输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则. a)这里首先判断两个链表中有没有空表,这个就是依据表头是否为空.然后就是比较节点值的大小,然后就是使 ...

  7. HTML 5 video 标签跨浏览器兼容

    <video width="320" height="240" controls>   <source src="movie.mp4 ...

  8. Eclipse自动调整格式

    Eclipse 编写Java代码的时候,使用右键Source -> Format 后,将自动调整格式,若想要{ 单独占一行,则可以自己定义相关格式模板 新建 CodeFormatter.xml ...

  9. js-图标控件

    1.highcharts http://www.hcharts.cn/ 2.echarts echarts.baidu.com

  10. HTTP协议学习---(十二)理解转发与重定向

    解释一 转发是服务器行为,重定向是客户端行为.为什么这样说呢,这就要看两个动作的工作流程: 转发过程:客户浏览器发送http请求---->web服务器接受此请求-->调用内部的一个方法在容 ...