Slick / Oracle PLAIN SQL插入后获取自动生成的ID

凡妮莎

我正在尝试通过Scala中的Slick运行查询,该查询会将一条记录插入Oracle数据库,并返回自动生成的ID作为结果。我看到使用Slick的语法可以做到这一点,但是使用普通的SQL查询可以实现吗?使用下面的代码,我只能得到-1的返回值。

val name = "Bob"
db.run(sql"""DECLARE NEW_PERSON_ID; 
             BEGIN 
               INSERT INTO TB_PEOPLE (ID, NAME)
               VALUES(SEQ_PEOPLE.NEXTVAL, $name) 
               RETURNING ID INTO NEW_PERSON_ID;
             END;""".as[Int])
凡妮莎

Slick似乎不支持输出参数,因此使用Oracle的返回语法将不起作用。我发现一种解决方法是先生成一个ID,然后使用该ID进行插入(需要2个查询)。查询被包装在事务中。

val name = "Bob"
val action = for {
    newPersonId <- sql"""SELECT SEQ_PEOPLE.NEXTVAL FROM DUAL""".as[Int]
    _ <- sqlu"""INSERT INTO TB_PEOPLE (ID, NAME) VALUES ($newPersonId, $name)"""
}
db.run(action.transactionally)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Slick Plain Sql通用返回类型

来自分类Dev

如何使用Slick Plain SQL和SQL Server返回自动生成的ID

来自分类Dev

使用 Slick Plain Sql 查询删除所有表

来自分类Dev

Slick 3.0插入,然后获取自动增量值

来自分类Dev

Slick + Scala:保存后自动获得ID

来自分类Dev

适用于Oracle的Slick 3.0自定义代码生成

来自分类Dev

在Slick中自动生成UUID

来自分类Dev

(Hibernate Oracle无法插入NULL)如何插入自动生成的ID?

来自分类Dev

(Hibernate Oracle无法插入NULL)如何插入自动生成的ID?

来自分类Dev

插入查询完成后,如何从表中获取自动生成的主键ID?

来自分类Dev

在Slick 2.0中插入后返回AutoInc ID

来自分类Dev

Scala Slick 2.0.0的生成错误

来自分类Dev

使用Sql Server配置Slick

来自分类Dev

在Slick中执行SQL转换

来自分类Dev

来自SQL文件的Slick SourceCodeGenerator

来自分类Dev

使用Sql Server配置Slick

来自分类Dev

将自动生成的ID从Oracle迁移到SQL Server

来自分类Dev

Scalatra / Slick并插入(如果不存在)

来自分类Dev

Scala Slick:插入失败,出现RejectedExecutionException

来自分类Dev

如何在Slick 2.1.0中使用编译后的插入?

来自分类Dev

如何在Slick 2.1.0中使用编译后的插入?

来自分类Dev

获取图像的content-type =“ text / plain”?

来自分类Dev

获取图像的content-type =“ text / plain”?

来自分类Dev

DDL生成上的Slick 2.1 MySqlSyntaxErrorException

来自分类Dev

Slick 3 Postgresql无效函数原始SQL

来自分类Dev

如何在Slick中执行SQL“ NOT LIKE”

来自分类Dev

Slick 3 Postgresql无效函数原始SQL

来自分类Dev

Scala / slick:获取已插入的行的ID(如果尚不存在)

来自分类Dev

Slick可以从模型中自动在数据库中创建表(生成SQL并执行)吗?

Related 相关文章

热门标签

归档