Java com.microsoft.sqlserver.jdbc.SQLServerException:靠近“|”的语法不正确

Java com.microsoft.sqlserver.jdbc.SQLServerException:靠近“|”的语法不正确,java,sql-server,oracle,jdbc,Java,Sql Server,Oracle,Jdbc,项目中有两个数据库连接。 1.oracle数据库 2.mssql数据库 return jdbcTemplate.queryForObject("SELECT 'AK'||LPAD(adds_seq.NEXTVAL,13, '0') adds_seq_no FROM sys.dual ",String.class); 数据库连接正常。问题是当数据传输/插入到一个数据库[oracle]中时,显示错误,同时数据成功插入到另一个数据库[mssql]。插入查询正常,但还有另一个查询是生成序列号。

项目中有两个数据库连接。 1.oracle数据库 2.mssql数据库

return jdbcTemplate.queryForObject("SELECT 'AK'||LPAD(adds_seq.NEXTVAL,13, '0') adds_seq_no     FROM sys.dual ",String.class);
数据库连接正常。问题是当数据传输/插入到一个数据库[oracle]中时,显示错误,同时数据成功插入到另一个数据库[mssql]。插入查询正常,但还有另一个查询是生成序列号。有问题

这是属于oracle数据库的查询

return jdbcTemplate.queryForObject("SELECT 'AK'||LPAD(adds_seq.NEXTVAL,13, '0') adds_seq_no     FROM sys.dual ",String.class);
错误是:

SELECT 'AK'||LPAD(adds_seq.NEXTVAL,13, '0') adds_seq_no     FROM sys.dual ",String.class ]; nested exception is com.microsoft.sqlserver.jdbc.SQLServerException: Incorrect syntax near '|'.
    at org.springframework.jdbc.support.SQLStateSQLExceptionTranslator.doTranslate(SQLStateSQLExceptionTranslator.java:98)
在没有mssql连接之前,它工作得很好

下面的查询是针对oracle数据库的。当我试图像这样更改代码时:

String sql = " SELECT 'AK'||LPAD(adds_seq.NEXTVAL,13, '0') adds_seq_no     FROM sys.dual";
String adSeqNum = null;
    try {
            adSeqNum = jdbcTemplate.queryForObject(sql, String.class);

        } catch (Exception e) {
            e.printStackTrace();
        }
         return addSeqNum;
那么错误是

org.springframework.dao.DataIntegrityViolationException: PreparedStatementCallback; SQL []; ORA-01400: cannot insert NULL into ("ADDSS_HST"."ADDS_SEQ_NO")
1.你能指导我如何解决这个问题吗

2.您能给我举个例子说明如何在一个java文件上进行单独的数据库连接吗?

由于您发送Oracle语句SELECT“AK”| | | LPADDS_seq。NEXTVAL,13,'0'将sys.dual中的_seqno添加到MSSQL服务器连接中,所以“|”附近的语法不正确

第二个错误是无法将null插入ADDSS_HST。我怀疑发生ADDS_SEQ_NO是因为在从序列中选择的已发布sql之前,您正在将记录插入ADDSS_HST表中。这是正确的吗?如果是这样,我建议您将生成adds_seq_no的代码放入一个触发器中,如下所示:根据您的需要调整名称:

CREATE OR REPLACE TRIGGER "APPLICATION_BI_TRG" 
BEFORE INSERT ON APPLICATION
REFERENCING NEW AS New OLD AS Old
FOR EACH ROW   
BEGIN
  if :new.application_id is null then 
    // if no value was given in insert statement for column application_id 

    SELECT APP_WEB_ID_SEQ.NEXTVAL INTO :NEW.application_id FROM dual;
    // select a value from sequence into :NEW.application_id 

  end if;

END;
/

您要插入什么值?听起来该语句试图在Oracle数据库的ADDSS_HST表的ADDS_SEQ_NO列中输入NULL,但它不是NULL列。