mysql存储过程如何返回主键 具体点

mysql!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

0

3个回答

out 输出就可以了。

参考自:MySQL存储过程详解 http://www.data.5helpyou.com/article314.html

0

你的存储过程写好了呀 ???
根据你写的存储过程 SELECT xxx=LAST_INSERT_ID();
然后
return xxx; 或者

按order by id desc limit 0,1进行一次数据查询,查询到的id即为你刚插入的数据id(此方法适用与单用户,多用户适用于楼上的LAST_INSERT_ID()方法)

0
mushoukai
mushoukai 好的,谢谢啊!
2 年多之前 回复
ALunece
ALunece 回复ALunece: 兄弟 只能帮你到这了 , 我要 工作了 。
2 年多之前 回复
ALunece
ALunece 回复mushoukai: MyBatis 3.2.6插入时候获取自增主键方法有二 以MySQL5.5为例: 方法1: <insert id="insert" parameterType="Person" useGeneratedKeys="true" keyProperty="id"> insert into person(name,pswd) values(#{name},#{pswd}) </insert> 方法2: <insert id="insert" parameterType="Person"> <selectKey keyProperty="id" resultType="long"> select LAST_INSERT_ID() </selectKey> insert into person(name,pswd) values(#{name},#{pswd}) </insert>
2 年多之前 回复
mushoukai
mushoukai 回复ALunece: 我用的mybatis……
2 年多之前 回复
ALunece
ALunece 回复ALunece: 不知道对你有没有帮助
2 年多之前 回复
ALunece
ALunece 回复mushoukai: Statement stmt = conn.createStatement(); stmt.executeUpdate("insert into t values(....)", Statement.RETURN_GENERATED_KEYS); ResultSet rs = stmt.getGeneratedKeys(); //得到新插入记录的自增主键
2 年多之前 回复
mushoukai
mushoukai 举个例子保存一条数据 主键是自增的,插入成功后让这条记录主键返回来,具体应该怎么写,存储过程已经写好了
2 年多之前 回复

如果你用tp框架 执行add()方法 返回出来的就是id 没用tp 就select最后一条数据的id

0
mushoukai
mushoukai 服务器自己搭的。用的轻量级框架mybatis
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
通过存储过程获取返回的刚刚插入的表的主键
未经同意不得转载 此主键可以是整型,字符型,由个人开发需求定义 SqlParameter[] sp = { new SqlParameter(&quot;@PID&quot;,PID), new SqlParameter(&quot;@SizeType&quot;,SizeType), n...
mysql存储过程(循环插入),获取自增主键作为外键插入其他表
#定义存储过程delimiter //DROP PROCEDURE IF EXISTS  pro_addaccount;##hosp_name医院名称,num_limit循环产生多少账号CREATE PROCEDURE pro_addaccount(in hosp_name VARCHAR(50),in num_limit int)BEGINDECLARE i int default 1;DECL...
mysql存储过程插入后返回ID
mysql插入后返回ID select LAST_INSERT_ID() 说明,即使是在并行的时候,多个程序都在插入,仍然能获得自己的ID,因为每个连接的会话号是不同的。 下面是一段插入一个用户后,返回该用户id的代码,要保证两条语句是同一连接执行的。 public static void Ruser(User user){    DBbean db=new DBbean();
存储过程返回新增数据的主键id值
可在存储过程中增加一个输出参数 @id 在执行完 insert into 语句之后给输出参数 @id 赋值: select @id = @@IDENTITY
存储过程添加一条记录并返回ID
SQL Server存储过程添加一条记录并返回新添加记录的ID号。
MySQL存储过程中捕获异常的方法
DECLARE处理程序的使用: DECLARE handler_type HANDLER FOR condition_value[,...] sp_statement 其中,  handler_type的取值范围:CONTINUE | EXIT | UNDO  condition_value的取值范围:SQLSTATE [VALUE] sqlstate_value |
mysql存储过程语法及实例
存储过程如同一门程序设计语言,同样包含了数据类型、流程控制、输入和输出和它自己的函数库。 --------------------基本语法-------------------- 一.创建存储过程 create procedure sp_name() begin ......... end 二.调用存储过程 1.基本语法:call sp_name() 注意:存储过程名称后面必
在MySql中建立存储过程和解决insert into select 中主键冲突的问题
首先说需求,我想重复插入大量数据,那么首先想到的,就是用insert into select语句。 但是因为mysql中没有将主键设为自增长,导致每次都会报主键冲突的错误,插入失败。 对于这个问题,就是灵活得改变一下。之前,我们一直用的是 insert into tableA select * frrom tableA 因此,现在我们修改为:insert into tableA(A,
MyBaits:如何接收Mysql存储过程多个返回集
我测试所用的表分别为app_action、app_action_type、integral_sign_source内容随便,大家可以随便建立; 存储过程名为:mytest  创建语句如下: DROP PROCEDURE IF EXISTS `mytest`$$ CREATE DEFINER=`wsrp`@`%` PROCEDURE `mytest`() BEGIN SELECT COU
mysql中的存储过程使用事物后如何正确得到影响行数
已知MySQL的存储过程中使用事物后,执行commit操作时会返回0 row(s) affected, 但是增删改已经正确执行了。 那么实际应用中一定要这个影响行数确认执行结果怎么办? 此时需要手动实现影响行数计数,然后在commit之前输出计数。 具体做法是利用row_count()。 每次增删改语句执行后,row_count()都会返回上一次影响行数, 设置一个变量接收这个函数的返回
mysql插入数据后返回自增ID的方法(AUTO_INCREMENT)
转载:https://www.cnblogs.com/duanxz/p/3862356.html mysql插入数据后返回自增ID的方法 mysql在插入一条数据后,如何能获得到这个自增id的值呢?即怎么获取设置为自增主键的id(AUTO_INCREMENT)?? 方法一:是使用last_insert_id mysql> SELECT LAST_INSERT_ID(); 产生的自增I
怎样得到mysql存储过程多条语句的结果集
create procedure getResult( in name varchar(30), in classNames varchar(30) ) begin select userName from lxlog where userName=name; select className from lxuser where className=classNames; ...
mysql 生成UUID 存储过程的基本概念
-- MD5 32位  SHA1 40位  她们都是单向加密 SELECT MD5('ADMIN'),SHA1('ADMIN'),PASSWORD('ADMIN'); -- UUID  36位16进制的全球唯一字符串 SELECT UUID(),LENGTH(UUID()); SELECT UUID(); SELECT FORMAT(12131321,2)
Mysql存储过程——多结果集返回与java获取
存储过程经常需要返回多个结果集。 Mysql 中直接用 select 即可返回结果集。而 oracle 则需要使用游标来返回结 果 集。这一点 Mysql 相对比较方便,如下代码即可实现输出两个结果集:          Sql code 2-1: [c-sharp] view plain copy CREATE PROCEDURE test_proc_multi_selec
Mysql利用存储过程获取结果集
MySQL利用存储过程获取结果集 1、创建 begin      select * from yewu_hetong; end ps.....MySQL只能获取前10个结果集,如果有多余的,请自行用代码获取 2、获取 con = Mytest.getConn(); //获取连接 String sql = "{call test()}"; cs =
MySQL存储过程中的三种循环方式
“明月别枝惊鹊,清风半夜鸣蝉” 最近存储过程写得多,循环多数用在游标里,在这里总结几种循环的方式 CREATE DEFINER=`root`@`localhost` PROCEDURE `NewProc`() BEGIN DECLARE startDate VARCHAR(20); DECLARE endDate VARCHAR(20); declare i...
mysql存储过程之返回多个值
mysql存储函数只返回一个值。要开发返回多个值的存储过程,需要使用带有INOUT或OUT参数的存储过程。咱们先来看一个orders表它的结构:mysql&amp;gt; desc orders; +----------------+-------------+------+-----+---------+-------+ | Field | Type | Null | K...
MySQL存储过程实现更新UUID
背景交代: 原有数据表中只有自增的id,现在需要新添加一个UUID的列。(UUID不需要“-”) 解决方法: 首先,如果你连自增的id列都没有,可以先生成一个自增id列,就算有数据了也没有关系。然后,我们为uuid给表新增加一列,名字就叫uuid。最后,我们建立如下的存储过程:DELIMITER $$USE `reptail`$$DROP PROCEDURE IF EXISTS `updat
mybatis调用mysql存储过程(返回参数,单结果集,多结果集)
一、接收一个返回值 使用Map接收返回参数,output参数放在传入的param中 创建表 DROP TABLE IF EXISTS `demo`; CREATE TABLE `demo` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`) ) ...
mybatis调用mysql存储过程返回结果集
存储过程中经常需要返回结果集。 Mysql 中直接用 select 即可返回结果集。而 oracle 则需要使用游标来返回结果集。这一点 Mysql 相对比较方便,如下代码即可实现输出结果集: 存储过程定义: DELIMITER $$ DROP procedure IF EXISTS pro_sql_data1 $$ CREATE procedure pro_sql_data1(in s
利用存储过程做mysql循环插入1
DROP PROCEDURE if exists insertdata; delimiter // CREATE PROCEDURE insertdata() begin declare yourid BIGINT; set yourid = 123460000000000001; while yourid  insert into db_zone_role.tbl_role_buy
存储过程 产生 UUID
CREATE OR REPLACE FUNCTION get_uuid RETURN VARCHAR IS guid VARCHAR (50); BEGIN guid := lower(RAWTOHEX(sys_guid())); RETURN substr(guid,1,8)||substr(guid,9,4)||substr(guid,13,4)||substr(guid,17...
mysql存储过程利用临时表返回结果集
首先要声明的是 1,游标的方法会很慢在mysql中,在oracle数据库中还可以,除非没有别的方法,一般不建议在mysql中使用游标, 2,不建议在mysql中拼接sql,会使存储过程显得很臃肿,可以使用or来动态判别传入的参数是否为空 and ( TTB.office_id=输入参数 or 输入参数 is null or 输入参数 = '') and ( TTB.office_i...
如何在mysql存储过程中处理select语句返回的多行结果(用游标)
CREATE PROCEDURE curdemo() BEGIN   DECLARE done INT DEFAULT 0;   DECLARE a CHAR(16);   DECLARE b,c INT;   DECLARE cur1 CURSOR FOR SELECT id,data FROM test.t1;   DECLARE cur2 CURSOR F
Mysql存储过程(二)——多结果集返回与java获取
存储过程经常需要返回多个结果集。 Mysql 中直接用 select 即可返回结果集。而 oracle 则需要使用游标来返回结 果 集。这一点 Mysql 相对比较方便,如下代码即可实现输出两个结果集:          Sql code 2-1: [c-sharp] view plaincopy CREATE PROCEDURE test_proc_multi_select
mysql存储过程在动态SQL内获取返回值
不需要使用游标循环来读取,直接select * into @变量就OK了,还可以传递参数来执行。例如: DROP PROCEDURE IF EXISTS stat_cube.sp_get_end_date; CREATE PROCEDURE stat_cube.`sp_get_end_date`( p_sp_name varchar(50), out p_ret_date date
如何在Java MyBatis 插入数据库返回主键?
问题?如何在Java MyBatis 插入数据库返回主键?最近在搞一个电商系统中由于业务需求,需要在插入一条产品信息后返回产品Id,刚开始遇到一些坑,这里做下笔记,以防今后忘记。类似下面这段代码一样获取插入后的主键User user = new User(); user.setUserName(&quot;chenzhou&quot;); user.setPassword(&quot;xxxx&quot;); user.se...
mybatis执行mysql存储过程返回结果集和输出参数
1、mapper接口类的方法List&amp;lt;InterviewRecordStatisticsVO&amp;gt; selectInterviewStatisticsByMonth(InterviewRecordStatisticsDTO dto);2、传递给mybatis的参数封装类import java.util.Date; import com.ejoyst.common.model.dto.ba...
MySQL存储过程中的错误处理
当MySQL执行存储过程遇到错误时,适当处理它,如继续执行或退出当前代码段,并返回有意义的错误提示是很重要的。一方面提高程序的容错能力,另一方便当程序出错时,开发人员也能准确定位错误的地方。 在本章MySQL教程中,我们将学习如何在存储过程中处理程序错误。 声明处理程序 MySQL为我们提供了一种简单的方法定义处理程序,我们可以使用DECLARE HANDLER语句,
调用存储过程返回list实例
1.controller层 HashMap map = new HashMap(); map.put("v_orgid", subjectorg.getOrgid()); map.put("v_year", subjectorg.getCreaty()); map.put("v_month",subjectorg.getCreatm() ); map.put("v_subid", sub
Java 调用 MySQL 存储过程并获得返回值
www.kmnk01.com private void empsInDept(Connection myConnect, int deptId) throws SQLException { CallableStatement cStmt = myConnect.prepareCall(\"{CALL sp_emps_in_dept(?)}\"); cStmt.setInt
Mysql 存储过程生成订单号,解决分布式问题
http://blog.goyiyo.com/archives/947 Mysql 存储过程生成订单号,解决分布式问题 2012年12月01日 ⁄ MYSQL ⁄ 共 490字 ⁄ 暂无评论 ⁄ 被围观 530 views+ CREATE PROCEDURE `createOrderNo_proc`(OUT outValue BIGINT) NO
mybatis执行insert语句后,返回当前插入数据主键的方法
实际开发过程中,有时候需要把当前插入的数据id取出来,但又不想调用查询接口,再去查一遍,会很繁琐,于是乎,mybatis提供了两种返回insert方法后的主键方法,这篇博客,我只记录其一,够用即可。 划重点,要考的 1.传入的参数必须为对象,不能为String int 之类的单个参数,即: &amp;amp;lt;insert id=&amp;quot;saveServerAddress&amp;quot; parameterType=&amp;quot;c...
主键设置自增,添加成功需要返回主键值
&amp;lt;insert id=&quot;add&quot; parameterType=&quot;Category&quot; keyProperty=&quot;id&quot; useGeneratedKeys=&quot;true&quot;&amp;gt; insert into category (name) values(#{name}) &amp;lt;/insert&amp;gt; keyProperty:主键 useGenerateKeys:true。
C#调用mysql查询存储过程
废话不多说,最近做了一个mysql的查询的存储过程,现在主要给大家看的是dao部分和存储过程的生成和使用,其他部分不太重要。 首先先看表,主要有两张表,一张是订单表,一张是车票表,两者是一对多的关系,通过orderId关联。 再看的是存储过程的生成,新建一个查询,不然每次更改都打一遍很麻烦,其实主要目的是生成函数,生成的函数才是我们真正调用来执行的。该查询是生成一个输入参数为peopl
mysql使用ROW_COUNT()返回插入、更新、删除操作影响行数
在Mysql中ROW_COUNT()返回前一个SQL进行UPDATE,DELETE,INSERT操作所影响的行数。 注意在UPDATE中,如果替换前、后值是一样的,ROW_COUNT也会返回0。 存储过程示例示例: begin  insert into test values('','第一条'); if ROW_COUNT()>0 then insert into test values('',
查询某个表的字段名,字段类型,长度及字段说明,查询主键信息,查询自增列信息的存储过程
create PROCEDURE [dbo].[ziduan] /*  function:查询某个表的字段名,字段类型,长度及字段说明,并asc排序;查询主键信息;查询自增列信息  */   ( @biaoming nvarchar(50)   )   AS SET NOCOUNT ON         --获取字段名,长度,缺省值,字段说明sql2000可用    -
mysql 创建存储过程 返回结果集 调用存储过程
DELIMITER // CREATE PROCEDURE test_proc_multi_select()   BEGIN            SELECT * FROM testproc;            SELECT * FROM testproc WHERE id=1;   END;  ///////使用方式 con = MConnecti
mysql 存储过程:提供查询语句并返回查询执行影响的行数
mysql 存储过程:提供查询语句并返回查询执行影响的行数 DELIMITER $$ DROP PROCEDURE IF EXISTS `p_get_select_row_number`$$ CREATE PROCEDURE `test_cases`.`p_get_select_row_number`(IN p_select_sql VARCHAR(500), OUT p_count IN...
mysql存储过程
如何编写 mysql存储过程 ,对存储过程的各种写法,语法,例子齐全。是编写mysql存储过程的法宝
文章热词 设计制作学习 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 云计算的具体课程 java具体的学习方法