【发布时间】: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