首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PLSQLJDBC:如何获取最后一行ID?

什么是与此SQL服务器片段等效的PLSQL(Oracle)?

代码语言:txt
AI代码解释
复制
BEGIN TRAN
INSERT INTO mytable(content) VALUES ("test") -- assume there's an ID column that is autoincrement
SELECT @@IDENTITY
COMMIT TRAN

在C#中,您可以调用myCommand。来检索新行的ID。如何在Oracle中插入新行,并让JDBC获得新id的副本?

BalusC提供了一个很好的起点。出于某种原因,JDBC不喜欢命名参数绑定。这会提供“Incorrectly set or registered parameters”SQLException。为什么会发生这种事?

代码语言:txt
AI代码解释
复制
        OracleConnection conn = getAppConnection();
        String q = "BEGIN INSERT INTO tb (id) values (claim_seq.nextval) returning id into :newId; end;" ;
        CallableStatement cs = (OracleCallableStatement) conn.prepareCall(q);
        cs.registerOutParameter("newId", OracleTypes.NUMBER);
        cs.execute();
        int newId = cs.getInt("newId");

回答 2

御姐万岁

发布于 2018-01-30 07:19:54

您可以使用Oracle的returning条款。

代码语言:txt
AI代码解释
复制
insert into mytable(content) values ('test') returning your_id into :var;

检查这个链接作为代码样本。您需要Oracle 10g或更高版本,以及JDBC驱动程序的新版本。

Maybe

发布于 2018-01-30 06:16:55

正常你会用Statement#getGeneratedKeys(),但是Oracle JDBC驱动程序仍然不支持这一点。

你最好的选择是任一利用CallableStatement带着RETURNING条款:

代码语言:txt
AI代码解释
复制
String sql = "BEGIN INSERT INTO mytable(id, content) VALUES (seq_mytable.NEXTVAL(), ?) RETURNING id INTO ?; END;";

Connection connection = null;
CallableStatement statement = null;

try {
    connection = database.getConnection();
    statement = connection.prepareCall(sql);
    statement.setString(1, "test");
    statement.registerOutParameter(2, Types.NUMERIC);
    statement.execute();
    int id = statement.getInt(2);
    // ...

SELECT sequencename.CURRVAL后使用INSERT

代码语言:txt
AI代码解释
复制
String sql_insert = "INSERT INTO mytable(content) VALUES (?)";
String sql_currval = "SELECT seq_mytable.CURRVAL FROM dual";

Connection connection = null;
PreparedStatement statement = null;
Statement currvalStatement = null;
ResultSet currvalResultSet = null;

try {
    connection = database.getConnection();
    connection.setAutoCommit(false);
    statement = connection.prepareStatement(sql_insert);
    statement.setString(1, "test");
    statement.executeUpdate();
    currvalStatement = connection.createStatement();
    currvalResultSet = currvalStatement.executeQuery(sql_currval);
    if (currvalResultSet.next()) {
        int id = currvalResultSet.getInt(1);
    }
    connection.commit();
    // ...
和开发者交流更多问题细节吧,去 写回答
相关文章
sqlite 获取最后插入id
SQLite数据库中的表均有一个特殊的rowid字段,它是一个不重复的64位有符号整数,默认起始值为1。rowid别名为oid或_rowid_,但在创建表的SQL声明语句中只能使用rowid作为关键字。如果在创建表的时候设置了类型为integer的具有自动增长性的主键,那么这时的主键相当于是rowid的别名。
随心助手
2020/06/09
6.6K0
WordPress 如何获取分类/标签的ID
鼠标移动到编辑处,看到浏览器底部出现链接,其中的tag_ID=5中这个5就是分类的ID,标签同理。
可定
2020/04/20
6.5K0
WordPress 如何获取分类/标签的ID
CSS 中最后一行中元素如何向左对齐
自从CSS 3.0出来以后,很多的页面布局都用弹性布来实现,特别是移动端,但是弹性布局也有它的弊端,就是最后一行如果数量不够,不会像我们正常的想法一样居左对齐。效果如下:
越陌度阡
2021/11/11
2.2K0
CSS 中最后一行中元素如何向左对齐
python删除文本最后一行_用python删除文件中的最后一行
我创建了以下代码来查找文件中的行数,但是我不知道如何删除特定的行号。我是新来的python – 所以如果有一个更简单的方法 – 请告诉我。
全栈程序员站长
2022/08/30
8.3K0
如何在 React 中获取点击元素的 ID?
在 React 应用中,我们经常需要根据用户的点击事件来执行相应的操作。在某些情况下,我们需要获取用户点击元素的唯一标识符(ID),以便进行进一步的处理。本文将详细介绍如何在 React 中获取点击元素的 ID,并提供示例代码帮助你理解和应用这个功能。
网络技术联盟站
2023/06/07
6.2K0
getIdentifier获取资源id
首先我想到的是反射,但是经过实验发现提示报错no emoty constructor。
提莫队长
2019/02/21
4.4K0
腾讯轻联中多维表记录id是什么?如何获取记录id?
在腾讯文档智能表、金山轻维表、维格表需要去【更新表格数据】的时候,经常会需要输入记录id(英文record id),很多用户也会有疑问,什么是记录id,如何获取记录id等。
阿那个沫
2023/04/10
2.7K0
通过进程句柄获取窗口句柄_如何查看进程id
大家好,我是架构君,一个会写代码吟诗的架构师。今天说一说通过进程句柄获取窗口句柄_如何查看进程id,希望能够帮助大家进步!!!
Java架构师必看
2022/07/19
5.6K0
JQuery如何获取ID含有特殊字符的DOM元素
为业务需要,DOM元素的ID被命名为“c-order.range”,执行JQuery的DOM查询时,提示如下错误
黄啊码
2021/09/26
11.5K0
3分钟短文 | Laravel模型获取最后一条插入记录的ID编号
为了模拟实际编程情况,我们使用以下代码。比如有一个CRM系统,需要用户输入上报公司信息之后,通过API接口返回提示信息。
程序员小助手
2020/08/03
3K0
mybatis获取update的id
平常我门都是更新数据,用更新的条件再查询一次,得到更新的记录。这样我门就进行了两次数据库操作,链接了两次数据库。增加了接口的处理事件,因为链接数据库是很耗时的操作。
似水的流年
2018/01/25
9.7K0
mybatis获取update的id
平常我门都是更新数据,用更新的条件再查询一次,得到更新的记录。这样我门就进行了两次数据库操作,链接了两次数据库。增加了接口的处理事件,因为链接数据库是很耗时的操作。 其实可以通过 mybatis 的 selectKey 标签来解决这个问题。  selectKey 这个标签大家基本上都用过,比如在插入数据的时候,返回插入数据的纪录。如: <selectKey resultType="int" order="AFTER" keyProperty="id"> SELECT
似水的流年
2018/03/28
4.2K0
vi中跳到文件的第一行和最后一行
由于vi编辑器不能使用鼠标,所以一个大文件如果要到最后一行只用键盘下键的话会是一个很痛苦的过程,还好有各种比较快捷的方法归我们使用:
全栈程序员站长
2022/07/11
11.5K0
mybatis获取update的id
平常我门都是更新数据,用更新的条件再查询一次,得到更新的记录。这样我门就进行了两次数据库操作,链接了两次数据库。增加了接口的处理事件,因为链接数据库是很耗时的操作。
似水的流年
2019/12/06
3.8K0
Typecho获取站点最后活动时间
而我们是想获取站点最后更新时间即站点最后活动时间,目前我只在Typecho的一款主题handsome中看到有工具类实现,在我们自己的博客主题想要只能自己实现了,不过也不难。
qiangzai
2021/12/21
8210
Typecho获取站点最后活动时间
开发 | 如何在小程序中,获取微信群 ID?
微信在 5 月 8 日晚间,突然又宣布了一个新能力——小程序可以读取微信群的唯一 ID。
知晓君
2018/08/01
5.6K0
开发 | 如何在小程序中,获取微信群 ID?
EasyGBS如何批量获取在线设备的国标编号(ID值)?
对于一些有二次开发或者集成需求的客户来说,API接口的公开是进行调用的基础,为了便于这部分用户的使用,TSINGSEE青犀视频平台都提供了API接口文档,调用自由方便。有的用户需要大批量的获取EasyGBS在线设备的国标编号,也就是设备的ID值,从EasyGBS前端是无法调用的,该功能可以通过接口调用来实现。下面我们讲一下实现方法。
TSINGSEE青犀视频
2021/09/09
3.8K0
displaytag如何实现获取到每行的id字段的值。
  使用封装好的框架,有时候,对于一个知识点不熟悉,可能会浪费你大把的时间,我使用displaytag主要是使用它的分页技术,但是客户提出的需求,是获取到每行的id,然后选择一个用户名称(用户id),将他们关联操作,其实业务很简单,但是获取到你想要的这一行,一开始确实难为着我了,后来才发现,很简单。
别先生
2019/06/03
5.5K0
pgsql 通过 序列 批量获取ID
CREATE OR REPLACE FUNCTION getNextIds (VARCHAR,INTEGER) RETURNS VARCHAR AS $body$ DECLARE str VARCHAR ; DECLARE nextid VARCHAR ; BEGIN str = ''; FOR i in 1..$2 loop nextid = (SELECT NEXTVAL($1)); str = str || nextid || ';' ; EN
qubianzhong
2018/08/08
4.2K0
Python 进程,获取进程id( o
import os pid=os.fork() #fork反复拷贝 if pid==0: print("A",os.getpid(),os.getppid()) else: print("B",os.getpid(),os.getppid()) # os.getpid()获取当前进程id os.getppid()获取父进程id
py3study
2020/01/10
4.9K0

相似问题

invalid owner id如何解决, owner id 怎么获取?

0531

好友ID怎么获取?

1319

IM iOS离线推送 如何获取到群组Id或者单聊Id?

0208

获取所有已上传的视频id列表?

1471

Access Token 获取时参数App_id和secret在哪里获取?

42.9K
相关问答用户
新浪微博 | 高级总监擅长4个领域
某公司 | 程序员擅长1个领域
海固科技 | Java工程师擅长4个领域
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档