繁体   English   中英

com.microsoft.sqlserver.jdbc.SQLServerException: '|' 附近的语法不正确

[英]com.microsoft.sqlserver.jdbc.SQLServerException: Incorrect syntax near '|'

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

数据库连接正常。 问题是当数据在一个数据库[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文件上做单独的数据库连接吗?

发生"Incorrect syntax near '|'"是因为您将 Oracle 语句"SELECT 'AK'||LPAD(adds_seq.NEXTVAL,13, '0') adds_seq_no FROM sys.dual "发送到 MSSQL 服务器连接。

第二个错误, cannot insert null into "ADDSS_HST"."ADDS_SEQ_NO"我怀疑是因为在发布从序列中选择的 sql 之前,您将记录插入到 ADDSS_HST 表中。 这样对吗? 如果是这样,我建议您将生成 add_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;
/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM