Как решить исключение java.sql.SQLE: ORA-06550? - PullRequest
0 голосов
/ 11 апреля 2019

У меня есть система, в которой система подключается к шлюзу GSM.Система использует опрос для извлечения данных из шлюза и сохранения в базе данных.Я не знаю, в чем проблема, но когда я начинаю вставлять данные в базу данных, появляется ошибка.Это не согласовано, однако, 1/10 попытки, прежде чем он будет сохранен в базе данных.

* Система опрашивает каждые 2 с

Вот полная ошибка, которую я получаю:


### The error may involve com.beneco.cwms.repository.SmsMapper.insertSmsListTest-Inline
### The error occurred while setting parameters
### SQL: BEGIN                            END;
### Cause: java.sql.SQLException: ORA-06550: line 4, column 9:
PLS-00103: Encountered the symbol "END" when expecting one of the following:

   ( begin case declare exit for goto if loop mod null pragma
   raise return select update while with <an identifier>
   <a double-quoted delimited-identifier> <a bind variable> <<
   continue close current delete fetch lock insert open rollback
   savepoint set sql execute commit forall merge pipe purge

; bad SQL grammar []; nested exception is java.sql.SQLException: ORA-06550: line 4, column 9:
PLS-00103: Encountered the symbol "END" when expecting one of the following:

   ( begin case declare exit for goto if loop mod null pragma
   raise return select update while with <an identifier>
   <a double-quoted delimited-identifier> <a bind variable> <<
   continue close current delete fetch lock insert open rollback
   savepoint set sql execute commit forall merge pipe purge

Я пытался удалить точку с запятой после BEGIN и END, я также пытался удалить точку с запятой после вставки, но она все равно не будет работать.Я не знаю, в чем проблема.

ПОДКЛЮЧЕНИЕ К ШЛЮЗУ И ВСТАВКА ДАННЫХ В БАЗУ ДАННЫХ

        TG800Connector smsGateway = new TG800Connector(sshHost, sshUser, sshPassword, sshPort);
        List<SmsMessage> smsList = smsGateway.getSmsMessages();
        List<SmsMessage> smsSendList = smsGateway.getSmsSendMessages();
        LOGGER.debug("############### GETING SMS MESSAGES FROM GATEWAY #####################");
        try {
            smsMapper.insertSmsListTest(smsList);
            smsMapper.insertSmsSendList(smsSendList);
            LOGGER.debug("############# STORING OF MESSAGES TO DATABASE SUCCESSFULL ################");
        }catch(Exception e) {

            LOGGER.debug("################ Storing Failed! ######################"+e.getMessage());
        }

QUERY

<insert id="insertSmsListTest" parameterType="map">
        BEGIN

        <foreach collection="smsList" item="smsmessage" index="index" >
          INSERT ALL INTO SMS_MESSAGES (MESSAGE_ID,
                             SENDER,
                             SMSC,
                             PORT_ID,
                             CONTENT,
                             RECEIVE_TIME,
                             HAS_READ,
                             TYPE_OF_MESSAGE,MESSAGE_STATUS)
            SELECT #{smsmessage.messageId}, #{smsmessage.sender}, #{smsmessage.smsc}, #{smsmessage.portId}, #{smsmessage.content}, #{smsmessage.receiveTime}, #{smsmessage.hasRead},#{smsmessage.typeOfMessage},#{smsmessage.messageStatus} from dual
            where not exists ( select * from SMS_MESSAGES where message_id = #{smsmessage.messageId});

        </foreach>
        END
    </insert>

Скажите, пожалуйста, если вам это нужнодругой код.

Можете ли вы, ребята, помочь мне.Я не знаю, почему это происходит.

...