У меня есть система, в которой система подключается к шлюзу 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>
Скажите, пожалуйста, если вам это нужнодругой код.
Можете ли вы, ребята, помочь мне.Я не знаю, почему это происходит.