Spring R2DBC+SQL Server:过程查询



我需要在SQL服务器中执行一个存储过程来获取一些数据,因为我稍后会将数据保存到Mongo中,而这个是使用ReactiveMongoTemplate等的,所以我引入了Spring R2DBC。

implementation("org.springframework.data:spring-data-r2dbc:1.0.0.RELEASE")
implementation("io.r2dbc:r2dbc-mssql:0.8.1.RELEASE")

我看到我可以用R2DBC做SELECTINSERT等等,但EXEC prod_name可能吗?我试过了,它一直挂着,然后测试终止,没有成功,但也没有失败。日志的最后一行是:

io.r2dbc.mssql.QUERY - Executing query: EXEC "SCHEMA"."MY_PROCEDURE" 

代码如下:

public Flux<Coupon> selectWithProcedure() {
return databaseClient
.execute("EXEC "SCHEMA"."MY_PROCEDURE" ")
.as(Coupon.class)
.fetch().all()
.doOnNext(coupon -> {
coupon.setCouponStatusRefFromId(coupon.getCouponStatusRefId());
});
}

而且似乎没有检索到任何数据。

如果我用SELECT...这样的简单查询测试其他一些方法,它就可以工作了。但问题是,DBA不允许我的应用程序读取表数据,相反,他们为我创建了一个过程。如果这个查询不可能,我必须使用传统的JPA方式,在Mongo端进行响应已经失去了意义。

好吧。我刚刚看到这个:

https://github.com/r2dbc/r2dbc-mssql,版本0.8.1:

下一步:

  • 存储过程的执行
  • 添加对TVP和UDT的支持

和:

https://r2dbc.io/2019/05/13/r2dbc-0-8-milestone-8-released

我们已经为下一个里程碑准备了一些门票,我们知道它们需要进一步的SPI修改:

  • 支持自动提交
  • 连接验证
  • 对存储过程的支持

最新更新