【问题标题】:Executing Firebird stored procedure using JOOQ使用 JOOQ 执行 Firebird 存储过程
【发布时间】:2015-07-28 21:43:25
【问题描述】:

我有 firebird 数据库,并创建使用它的 java 项目。通过使用 GenerationTool 我生成数据库结构。当我尝试执行这样的语句时,一切正常。

Result<Record1<Integer>> toStations = create.select(STATIONS.STATION_ID).
                    from(STATIONS).
                    where(STATIONS.CITY_ID.equal(create.select(CITIES.CITY_ID).
                            from(CITIES).
                            where(CITIES.CITY_NAME.equal(to)))).fetch();

但是我不能执行存储过程。我有存储过程:

create or alter procedure Find_Schemes (
    FROM_STATION ID not null,
    TO_STATION ID not null)
returns (
    SCHEME_ID ID)
as
begin
  for select SCHEME_ID
      from SCHEMES S
      where PATH_ID = (select PATH_ID
                       from PATHES P
                       where PATH_ID = S.PATH_ID and
                             (select LIST_POS
                              from PATHES_STATIONS
                              where PATH_ID = P.PATH_ID and
                                    STATION_ID = :FROM_STATION) < (select LIST_POS
                                                                   from PATHES_STATIONS
                                                                   where PATH_ID = P.PATH_ID and
                                                                         STATION_ID = :TO_STATION))
      into :SCHEME_ID
  do
  begin
    suspend;
  end
end
^

我试过这样处决他

Result result = (Result) Routines.findSchemes(7,22);
            System.out.println(result);

但我有一个例外,我不能将其转换为(结果);

然后我尝试这样做,但这不起作用,因为 findSchemes 需要字符串参数,但在我的程序中只有整数参数:

Result result = create.select(FIND_SCHEMES(7,22));

如何使用 JOOQ 执行 Firebird 程序?

【问题讨论】:

  • 如果有异常跟踪,您应该始终附加异常跟踪
  • 您不能在存储过程中select。您需要使用返回结果集的函数。或者你需要一个处理游标的过程调用(不知道 JOOQ,所以我不能告诉你如何在那里做——在普通的 JDBC 中会很简单)

标签: java sql database stored-procedures jooq


【解决方案1】:

输入随机命令 3 小时后就可以工作了。

Result result = create.selectFrom(Routines.findSchemesWithInfo(7, 22)).fetch();

System.out.println(result);
+---------+----------+---------------+--------+-----------+-----------+------------+-------+
|SCHEME_ID|START_CITY|END_CITY       |DISTANCE|TRAVEL_TIME|COMFORT_LVL|HAND_LUGGAGE|LUGGAGE|
+---------+----------+---------------+--------+-----------+-----------+------------+-------+
|        1|Київ      |Миколаїв       |     189|        193|Преміум    |      {null}| {null}|
|        2|Київ      |Кіровоград     |     189|        193|Преміум    |      {null}| {null}|
|        3|Київ      |Кіровоград     |     189|        193|Преміум    |      {null}| {null}|
|        4|Київ      |Дніпропетровськ|     189|        193|Преміум    |      {null}| {null}|
+---------+----------+---------------+--------+-----------+-----------+------------+-------+

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-09-12
  • 1970-01-01
  • 2013-12-06
  • 2012-04-16
  • 2018-07-03
  • 2013-07-26
  • 2023-03-23
相关资源
最近更新 更多