簡體   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