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

 
 
时间: 2024-08-14 02:00:28

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

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

首先我在mysql的test数据库里定义了一个student表: create table student4( id   int   primary key, sanme char(5) ); 插入几个数据做测试用: inset into student values(1,'mayi'); inset into student values(2,'mayi'); inset into student values(3,'mayi'); 建立存储过程: in 型: delimiter // cre

Mysql存储过程(Java)

这是我学习mysql存储过程时关心的几个点内容,希望能对你们学习存储过程有所帮助. 语法: create procedure sp_name ([proc_parameter[,...]]) [characteristic ...]begin.......end Proc_parameter:存储过程的参数列表,多个参数彼此间用逗号分隔      格式[IN|OUT|INOUT] param_name type IN(输入参数).OUT(输出参数).INOUT(输出参数和输入); Param_n

Java调存储过程

一:Java如何实现对存储过程的调用:   A:不带输出参数的   ---------------不带输出参数的----------------------------------create procedure getsum@n int =0<--此处为参数-->asdeclare @sum int<--定义变量-->declare @i intset @sum=0set @i=0while @i<[email protected] beginset @[email pro

JAVA对存储过程的调用方法

博客分类: java java存储过程sql 一:Java如何实现对存储过程的调用:   A:不带输出参数的   ---------------不带输出参数的----------------------------------create procedure getsum@n int =0<--此处为参数-->asdeclare @sum int<--定义变量-->declare @i intset @sum=0set @i=0while @i<[email protecte

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

一.Java如何实现对存储过程的调用: A:不带输出参数的 create procedure getsum @n int =0<--此处为参数--> as declare @sum int<--定义变量--> declare @i int set @sum=0 set @i=0 while @i<=@n begin set @sum=@sum+@i set @i=@i+1 end print 'the sum is '+ltrim(rtrim(str(@sum))) 在SQL

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

这一篇博客接着上一篇博客继续介绍 SQL CLR Stored Procedure 和 CLR Trigger, 上一篇博客介绍了 SQL CLR Function 的使用,以及 CLR 程序集的注册和 CLR Function 的注册. 我的上一篇博客:SQL Server CLR 使用 C# 自定义函数 四.CLR Stored Procedure 接下来在之前的项目选择添加新项,选择 SQL CLR C# 存储过程. public partial class StoredProcedure

Hibernate4.x之Session--常用方法

接上篇文章继续学习Hibernate的Session(http://www.cnblogs.com/dreamfree/p/4111777.html) 持久化对象的状态; 站在持久化的角度,Hibernate把对象分为4种状态:持久化状态.临时状态.游离状态.删除状态. Session的特定方法能使对象从一个状态转换到另一个状态. 临时对象(Transient): 在使用代理主键的情况下,OID通常为null 不处于Session的缓存中 在数据库中没有对应的记录 持久化对象(也叫“托管”)(P

什么是SQLCLR与使用

原帖地址:http://www.cnblogs.com/hsrzyn/archive/2013/05/28/1976555.html 什么是SQLCLR SQL CLR (SQL Common Language Runtime) 是自 SQL Server 2005 才出现的新功能,它将.NET Framework中的CLR服务注入到 SQL Server 中,使得.NET代码可在SQL Server服务器进程中执行. 通过在 Microsoft SQL Server 中托管 CLR(称为 CL

Rookey.Frame之系统初始化

昨天介绍了数据库的配置,今天继续介绍系统的初始化功能:针对系统初始化在开发中也是很重要的一部分,它可以提前将相关数据提前自动初始化到系统中,同时也可以为上线测试提供方便,可以很方便进行系统测试演练,防止人为处理带来的隐患并且可以节省大量部署时间. 本框架中系统初始化包含数据库(包括默认库和自定义库)初始化.数据表初始化.系统数据初始化以及自定义数据初始化,在Rookey.Frame.Controllers\UserController.cs用户控制器中,在登录页面Login(Action)中,系

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

你还在为数据库编程而抓狂吗?那些恶心的脚本拼接,低效的脚本调试的日子将会与我们越来越远啦.现在我们能用支持.NET的语言来开发数据库中的对象,如:存储过程,函数,触发器,集合函数已及复杂的类型.看到这些你还能淡定吗?哈哈,不仅仅是这些.那些能被.NET支持的第三方扩展通过该技术统统都能应用在数据库编程上,如:正则表达式,.NET庞大的加密解密库,以及各种.NET集成的排序和搜索算法. 下面我就来一一介绍怎么使用该技术来解放我们的双手! 实现存储过程 [csharp] view plaincopy