相关疑难解决方法(0)

PLSQL JDBC:如何获取最后一行ID?

什么是PLSQL(Oracle)相当于这个SQL服务器片段?

BEGIN TRAN
INSERT INTO mytable(content) VALUES ("test") -- assume there's an ID column that is autoincrement
SELECT @@IDENTITY
COMMIT TRAN
Run Code Online (Sandbox Code Playgroud)

在C#中,您可以调用myCommand.ExecuteScalar()来检索新行的ID.

如何在Oracle中插入新行,让JDBC获取新ID的副本?

编辑: BalusC提供了一个非常好的起点.由于某种原因,JDBC不喜欢命名参数绑定.这给出了"错误设置或注册的参数"SQLException.为什么会这样?

        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");
Run Code Online (Sandbox Code Playgroud)

java oracle plsql jdbc

18
推荐指数
2
解决办法
1万
查看次数

获取Oracle DB中插入行的最后一个ID

可能重复:
PLSQL JDBC:如何获取最后一行ID?

我从表中获取ID时遇到问题.我有两个表AJPES_TR和TR_LOG,并且TR_LOG表中的PK被设置为AJPES_TR表中的外键.

在TR_LOG表中,我只是编写从哪个文件数据导入,我想将该PK链接到主表.在mySQL中我做得很好getID.last(); int j = getID.getInt(TR_LOG_ID);但是现在在Oracle中这已不再适用了.

这些是我的PreparedStatements:

PreparedStatement insertData = 
  con.prepareStatement(
    "INSERT INTO T_AJPES_TR(rn,sSpre,reg,eno,davcna,Ime,Priimek) VALUES (?,?,?,?,?,?,?)"
  );
PreparedStatement select_file_log = 
  con.prepareStatement("SELECT * FROM T_AJPES_TR_LOG WHERE File_import = ?"
);
PreparedStatement getID = con.prepareStatement("SELECT * FROM T_AJPES_TR_LOG");
PreparedStatement insertFile = 
  con.prepareStatement(
    "INSERT INTO T_AJPES_TR_LOG(Date_import,File_import) VALUES (?,?)"
  );
Run Code Online (Sandbox Code Playgroud)

在mySQL中,ID被设置为自动增量.

如何从TR_LOG获取ID值并在AJPES_TR表中写入该值?

java oracle jdbc

12
推荐指数
2
解决办法
2万
查看次数

使用JDBC获取Oracle 11g的最后一个插入ID

我刚开始使用Oracle,所以我将在之前回答过这个问题.我似乎无法让它工作.这是我正在使用的声明:

declare
  lastId number;
begin
INSERT INTO "DB_OWNER"."FOO" 
  (ID, DEPARTMENT, BUSINESS)
  VALUES (FOO_ID_SEQ.NEXTVAL, 'Database Management', 'Oracle')
  RETURNING ID INTO lastId;
end;
Run Code Online (Sandbox Code Playgroud)

当我调用executeQuery我所做的PreparedStatement时,它会将所有内容都插入到数据库中.但是,我似乎无法弄清楚如何检索ID.返回的ResultSet对象对我不起作用.调用

if(resultSet.next()) ...
Run Code Online (Sandbox Code Playgroud)

产生令人讨厌的SQLException,其内容如下:

无法在PLSQL语句上执行提取:下一步

我怎么做到的lastId?显然我做错了.

java oracle jdbc oracle11g

5
推荐指数
1
解决办法
1万
查看次数

标签 统计

java ×3

jdbc ×3

oracle ×3

oracle11g ×1

plsql ×1