【问题标题】:How to execute oracle stored procedure in spring boot by running set serveroutput on first如何通过首先运行 set serveroutput 在 Spring Boot 中执行 oracle 存储过程
【发布时间】:2022-06-14 17:54:46
【问题描述】:

我有一个 Spring Boot 应用程序,当我运行它时它会调用 oracle 存储过程,它给我一个空输出,然后我发现应该为 oracle 运行 first set serveroutput on 命令以显示存储过程的结果。

在执行存储过程之前,如何在 Spring Boot 中运行 set serveroutput on。

这是我执行存储过程的代码。

package com.dmacc.amsaadapterdmacc.model;

import lombok.Data;

import javax.persistence.\*;
import java.util.Date;

@Data
@Entity
@NamedStoredProcedureQuery(name = "pathwaysjourney_sp", procedureName = "AMSA_Marketing_Cloud.pathways_journey")
public class PathwaysJourney {

    @Id
    private long id;
    private Integer pidm;
    private String bannerID;
    private String firstName;
    private String lastName;
    private Integer termCode;
    private String termDescription;
    private Integer applicationNumber;
    private String applicationStatusCode;
    private String applicationStatusDescription;
    private String applicationProgram;
    private String majorCode;
    private String majorDescription;
    private Date applicationDate;
    private Integer daysFromApplication;
    private String email;
    private String mobileNumber;

`}`

`package com.dmacc.amsaadapterdmacc.dao;`

`import com.dmacc.amsaadapterdmacc.model.PathwaysJourney;`
`import org.springframework.beans.factory.annotation.Autowired;`
`import org.springframework.data.jpa.repository.Query;`
`import org.springframework.stereotype.Repository;`

`import javax.persistence.EntityManager;`
`import java.util.List;`

`@Repository`
`public class PathwaysJourneyDao {`

    @Autowired
    private EntityManager em;
    
    @SuppressWarnings("unchecked")

`public List<PathwaysJourney> getPathwayJourney(){`
`return em.createNamedStoredProcedureQuery("pathwaysjourney_sp").getResultList();`
`}`
`}`

I couldn't find any clue how to solve this

【问题讨论】:

  • 尝试查看有关将 DBMS_OUTPUT 行放入 Java 程序的问题。 Here's one 使用 dbms_output.get_lines 和 here's a Spring/Hibernate 解决方案。
  • 您最好使用某种将消息记录到 db 表而不是依赖 dbms_output 的日志记录过程。
  • 是什么让您相信set serveroutput on 是必需的?那是 sqlplus/sqlcl 命令,而不是 SQL 命令。 DBMS_OUTPUT 仅使用其PUT_LINE 函数写入消息,然后必须使用 DBMS_OUTPUT.GET_LINE 读取或转储到控制台(如果 serveroutput 为“on”),否则生成的消息将被忽略。此功能通常仅用于调试;从字面上看,没有人设计程序以这种方式返回实际数据。

标签: oracle spring-boot stored-procedures


猜你喜欢
  • 2010-12-23
  • 2019-12-04
  • 1970-01-01
  • 1970-01-01
  • 2011-06-19
  • 1970-01-01
  • 2014-12-04
  • 1970-01-01
  • 2010-09-19
相关资源
最近更新 更多