CREATE DEFINER = 'root'@'%' PROCEDURE `PROC_ROLE_CREATE`(IN i_opr_id SMALLINT, IN i_passport VARCHAR(32), IN i_rolename VARCHAR(32), IN i_sex VARCHAR(1), IN i_ip BIGINT, IN i_recommend INTEGER(11), IN i_type VARCHAR(1), IN i_hair INTEGER(11), IN i_face INTEGER(11), IN i_clothes INTEGER(11), OUT o_state INTEGER(11), OUT o_id INTEGER(11))
NOT DETERMINISTIC
CONTAINS SQL
SQL SECURITY DEFINER
COMMENT ''
quit:
BEGIN
SET o_state = 1;
IF(i_opr_id IS NULL OR i_passport IS NULL OR i_rolename IS NULL
OR i_sex IS NULL OR i_type IS NULL OR i_hair IS NULL
OR i_face IS NULL OR i_clothes IS NULL)THEN
SET o_state = 1502;
LEAVE quit;
END IF;
SET @dn = NOW();
SET @likeName = CONCAT('0',i_rolename);
##init role
SET @uniqueState=0;
BEGIN
DECLARE CONTINUE HANDLER FOR SQLSTATE'23000' SET @uniqueState=1;
INSERT INTO player_roles(s_rolename,s_likename,n_opr_id,s_passport,s_sex,s_type,s_state,d_create,n_ip,n_recommend)
VALUES(i_rolename,@likeName,i_opr_id,i_passport,i_sex,i_type,'1',@dn,i_ip,i_recommend);
IF(@uniqueState=1) THEN
SET o_state = 6004;
LEAVE quit;
ELSEIF(ROW_COUNT()<>1)THEN
SET o_state = 1504;
LEAVE quit;
END IF;
SELECT LAST_INSERT_ID() INTO @oid;
END;
IF(@oid IS NULL) THEN
SET o_state = 1501;
LEAVE quit;
END IF;
#init property
INSERT INTO player_property(n_roleid,s_sex,s_vocation,n_rank,n_vcurrency,n_grade,n_merit,n_wisdom,n_wisdom_exp,n_agile,n_agile_exp,n_comm,n_comm_exp,n_health,n_health_exp,
n_voc_level,n_voc_exp,n_blood,n_energy,n_luck,n_bad,n_body_state,n_online_time,d_last_online,s_online,n_luck_reset)
VALUES(@oid,i_sex,'0',0,1000,0,0,0,0,0,0,0,0,0,0,0,0,100,100,0,0,0,0,@dn,'1',1);
IF(ROW_COUNT()<>1)THEN
SET o_state = 1504;
LEAVE quit;
END IF;
##init dress
INSERT INTO dress_role_current(n_roleid,n_doid,n_cid)
VALUES(@oid,i_hair,0),(@oid,i_face,0),(@oid,i_clothes,0);
IF(ROW_COUNT()<>3)THEN
SET o_state = 1504;
LEAVE quit;
END IF;
##history dress
###init role dress
INSERT INTO dress_history(n_roleid,s_type,d_time)
VALUES(@oid,'0',@dn);
IF(ROW_COUNT()<>1) THEN
SET o_state = 1504;
LEAVE quit;
END IF;
SELECT LAST_INSERT_ID() INTO @opid;
INSERT INTO dress_history_detail(n_pid,n_doid)
VALUES(@opid,i_hair),(@opid,i_face),(@opid,i_clothes);
IF(ROW_COUNT()<>3)THEN
SET o_state = 1504;
LEAVE quit;
END IF;
INSERT INTO fight_player_cards(n_roleid,n_card)
VALUES(@oid,31),(@oid,32),(@oid,33);
IF(ROW_COUNT()<>3)THEN
SET o_state = 1504;
LEAVE quit;
END IF;
INSERT player_config(n_roleid,n_pack_cap,n_trade_cap,s_task,n_buy_cap,n_card_cap)
VALUES(@oid,40,2,'0',2,2);
IF(ROW_COUNT()<>1)THEN
SET o_state = 1504;
LEAVE quit;
END IF;
INSERT INTO fight_info(n_roleid,n_points,n_total,n_succ,n_fail,n_cont,n_fight)
VALUES(@oid,0,0,0,0,0,0);
IF(ROW_COUNT()<>1)THEN
SET o_state = 1504;
LEAVE quit;
END IF;
##add
INSERT INTO servant_info(n_roleid,s_master,n_enslaveds,n_tenslaves,n_enslaves)
VALUES(@oid,'0',0,0,0);
IF(ROW_COUNT()<>1)THEN
SET o_state = 1504;
LEAVE quit;
END IF;
INSERT INTO npc_favorability(n_roleid,n_npcid,n_favor)
(SELECT @oid,n_npcid,0 FROM npc_define);
IF(ROW_COUNT()<1)THEN
SET o_state = 1504;
LEAVE quit;
END IF;
##
INSERT INTO letter_info(n_send_roleid,n_recieve_roleid,s_type,s_type2,s_extend,s_affix,d_send)
VALUES(NULL,@oid,'1','97',NULL,'0',@dn);
IF(ROW_COUNT()<>1) THEN
SET o_state = 1504;
LEAVE quit;
END IF;
##tmp
INSERT INTO acc_balance(n_roleid,n_balance,n_token,n_total_imprest,n_total_present,d_create)
VALUES(@oid,1000,0,1000,0,@dn);
IF(ROW_COUNT()<>1)THEN
SET o_state = 1504;
LEAVE quit;
END IF;
SET o_state = 0;
SET o_id =@oid;
END;
分享到:
相关推荐
MySQL 存储过程实例 MySQL 存储过程实例详细介绍了 MySQL 存储过程的开发步骤,本节将通过具体的实例讲解 PHP 是如何操纵 MySQL 存储过程的。 创建存储过程 存储过程的创建是 MySQL 存储过程的基础,MySQL 5.0 ...
### MySQL存储过程实例教程 #### 存储过程概念与优势 存储过程,作为数据库中一种预编译的SQL语句集合,旨在实现特定功能并存储于数据库内,用户仅需指定其名称及必要参数即可调用执行。这种设计极大地简化了...
MYSQL 存储过程 实例,要的自己下,分有点贵哦。
MySQL存储过程实例教程 MySQL存储过程是数据库存储的一个重要的功能,它允许控制数据的访问方式,提供了灵活的编程方式,提高了数据库的处理速度和灵活性。本教程将详细介绍 MySQL 存储过程的概念、优点、创建和...
根据给定的信息,我们可以深入探讨PHP与MySQL存储过程的相关知识点,包括如何在MySQL中使用`CONCAT`函数、创建存储过程以及如何通过PHP脚本来调用这些存储过程。 ### 使用 CONCAT 函数 #### 标题中的示例 ```sql ...
mysql存储过程实例详解
本实例展示了如何在MySQL存储过程中实现异常处理,以捕获并处理可能出现的错误。 首先,我们注意到在创建存储过程`myProc`时,使用了`delimiter $$`来改变MySQL客户端的语句分隔符,这是为了在存储过程中使用多个...
给了一个小的mysql 存储过程的例子。同时给出了一个在pb9中调用的例子.本例子是给出的mysql8.0的存储过程。对于5.7一下的现在odbc很难有支持
本文实例讲述了mysql存储过程之返回多个值的方法。分享给大家供大家参考,具体如下: mysql存储函数只返回一个值。要开发返回多个值的存储过程,需要使用带有INOUT或OUT参数的存储过程。咱们先来看一个orders表它的...
在这个例子中,存储过程被调用了六次,每次加薪金额为100元,根据不同的起始工资进行操作。 接下来,我们看几个关于SQL查询的实例,这些实例涉及到了关系数据库中的联接、条件过滤和时间区间查询: 1. 查询...
本资源结合实例实现一个复杂的存储过程,存储过程中有用到游标、临时表、循环、递归等知识,sql文件附有实例数据表创建的sql语句。
### MySQL存储过程详解 #### 一、存储过程概述 存储过程是一种特殊类型的SQL代码集合,它们预先被编译并存储在数据库服务器上。用户可以通过指定存储过程名称并提供必要的参数来执行这些存储过程。这种机制提供了...
MySQL存储过程是数据库管理系统提供的一种高级程序设计语言,允许用户在数据库中封装一系列复杂的操作,以便重复使用。在MySQL 5.0及后续版本中,存储过程被引入,极大地提升了数据库管理和应用程序的效率。本教程将...
### MySQL存储过程实战知识点 #### 一、存储过程概述 MySQL 存储过程是一种预编译的 SQL 脚本,它可以包含复杂的逻辑控制结构、循环等操作,并且可以接受参数,执行完后还可以返回结果。存储过程可以提高数据处理...
存储过程文档--MySQL 存储过程是 MySQL 中的一个强大功能,它允许用户预先将常用的或复杂的工作写入 SQL 语句,并将其存储起来,以便在以后的数据库操作中可以快速调用和执行。存储过程可以提高数据库的执行速度,...