e_msg_c_as_register_req-注册存储过程
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-注册存储过程的更多相关文章
- 存储过程详解与java调用(转)
存储过程的一些基本语法: --------------创建存储过程----------------- CREATE PROC [ EDURE ] procedure_name [ ; number ] ...
- J2EE之oracle、mysql存储过程调用
最近几天在研究hibernate.JPA对存储过程的调用,主要是针对有返回结果集的存储过程的调用方法,个人感觉存储过程是个好东西,虽然说heibernate对数据访问封装的比较不错,再加上他的缓存机制 ...
- Oracle存储过程的调用(返回参数)
CREATE OR REPLACE PROCEDURE test_in_out_exception (v_empno VARCHAR2,v_guess_sal NUMBER,v_true_sal OU ...
- Oracle存储过程创建及调用(转)
在大型数据库系统中,有两个很重要作用的功能,那就是存储过程和触发器.在数据库系统中无论是存储过程还是触发器,都是通过SQL 语句和控制流程语句的集合来完成的.相对来说,数据库系统中的触发器也是一种存储 ...
- Java对存储过程的调用方法 --转载
一.Java如何实现对存储过程的调用: A:不带输出参数的 create procedure getsum <--此处为参数--> as declare @sum int<--定义变 ...
- java 调用mysql的存储过程(简单示例)
首先我在mysql的test数据库里定义了一个student表: create table student4( id int primary key, sanme char(5) ); 插入几 ...
- SQL Server CLR 使用 C# 自定义存储过程和触发器
资源来源:https://www.cnblogs.com/Brambling/p/8016060.html SQL Server CLR 使用 C# 自定义存储过程和触发器 这一篇博客接着上一篇博 ...
- Oracle存储过程创建及调用
在大型数据库系统中,有两个很重要作用的功能,那就是存储过程和触发器.在数据库系统中无论是存储过程还是触发器,都是通过SQL 语句和控制流程语句的集合来完成的.相对来说,数据库系统中的触发器也是一种存储 ...
- JAVA对存储过程的调用方法(本文源于网络)
博客分类: java java存储过程sql 一:Java如何实现对存储过程的调用: A:不带输出参数的 ---------------不带输出参数的-------------------- ...
- 提高你的数据库编程效率:Microsoft CLR Via Sql Server
你还在为数据库编程而抓狂吗?那些恶心的脚本拼接,低效的脚本调试的日子将会与我们越来越远啦.现在我们能用支持.NET的语言来开发数据库中的对象,如:存储过程,函数,触发器,集合函数已及复杂的类型.看到这 ...
随机推荐
- C#开发命名规范
学习C#之初,始终不知道怎么命名比较好,很多时候无从命名,终于有一天我整理了一份命名规范文档,自此我就是按照这个命名规范书写代码,整洁度无可言表,拙劣之处请大家斧正,愚某虚心接受,如有雷同,不胜荣幸 ...
- 【Alpha版本】冲刺阶段——Day 7
我说的都队 031402304 陈燊 031402342 许玲玲 031402337 胡心颖 03140241 王婷婷 031402203 陈齐民 031402209 黄伟炜 031402233 郑扬 ...
- springMVC自定义注解实现用户行为验证
最近在进行项目开发的时候需要对接口做Session验证 1.自定义一个注解@AuthCheckAnnotation @Documented @Target(ElementType.METHOD) @I ...
- MySQL server PID file could not be found!
重启mysql提示MySQL server PID file could not be found! Starting MySQL...The server quit without updating ...
- python中的字符数字之间的转换函数
int(x [,base ]) 将x转换为一个整数 long(x [,base ]) 将x转换为一个长整数 float(x ) ...
- shell 题
(1)有一推主机地址:a.baidu.com.....z.baidu.com如何从这些数据中提取出.baidu.com之前的字母,如:a b...z? #cat f1.txt | while read ...
- finally关键字
final:禁止多态开关~修饰变量:变量不能被改变修饰类:类不能被继承修饰方法:方法不能被重写 finally:用在异常处理的最后一个语句块无论是否产生异常都要被执行~~~ Java代码 public ...
- iOS清理缓存的几种方法
- (long long) fileSizeAtPath:(NSString*) filePath{ NSFileManager* manager = [NSFileManager defau ...
- PLSQL设置显示的字符集及PLSQL的一些自身设置
一.关于PLSQL无法正确显示中文 刚才下载安装了PLSQL Developer 9.0.0.1601 汉化绿色版,执行SQL查询语句,发现显示的数据中只要有中文都会以?表示.经过网上查询得知这是客户 ...
- java高新技术-泛型
1.体验泛型 泛型是提供给javac编译器使用的,可以限定集合中的输入类型,让编译器挡住源程序中的非法输入,编译器编译带类型说明的集合时去除掉"类型"信息,使程序运行小效率不受影响 ...