Java: при вызове хранимой процедуры я получаю ошибку mysql

Я пытаюсь добавить значение даты в формате yyyy-mm-dd в mysql, используя хранимую процедуру.

Если я вызову хранимую процедуру в mysql, я смогу правильно вставить те же данные.

Однако, когда я пытаюсь вызвать его через java, я получаю сообщение об ошибке:

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'medication(1005,51,'2' at line 1

Моя хранимая процедура:

CREATE DEFINER=`xxx`@`localhost` PROCEDURE `insert_eD_dispensed medication`(IN `prescription_mapping_id` int(11), IN  `patient_id` int(11),   IN `date_of_dispense` date )
    NO SQL
INSERT INTO `prescription_dispensation_mapping` (`prescription_mapping_id`,  `patient_id`,  `date_of_dispense` )

Вызов:

public boolean insert_eD_dispensation (String prescription_mapping_id,  String patient_id,  String date_of_dispense) {
        Connection conn = this.getDBMySQLCon();
        String queryString;
        PreparedStatement preparedStmt = null;
        try {
            queryString = " {CALL insert_eD_dispensed medication(?,?,?)}";
            preparedStmt = conn.prepareStatement(queryString);

            preparedStmt.setInt(1, toInteger(prescription_mapping_id));
            preparedStmt.setInt(2, toInteger(patient_id));
            preparedStmt.setDate(3, java.sql.Date.valueOf(date_of_dispense));
            preparedStmt.execute();
            conn.close();
            return true;
        } catch (SQLException e) {
            e.printStackTrace();
            return false;
        }
    }

Вызов метода java:

String prescription_mapping_id = "1005"; 
String patient_id = "1"; 
String date_of_dispense = "2019-06-19"; 

boolean x = insert_eD_dispensation(prescription_mapping_id, patient_id, date_of_dispense) 
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
0
63
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я думаю, что проблема может быть в подписи вашего продукта. Но также проблемы с часовым поясом, вот сообщение для проверки этого. введите сюда описание ссылки

Спасибо davidza5. Действительно, проблема заключалась в подписи моей хранимой процедуры. В его названии есть пробел insert_eD_dispensed medication. Я переименовал его в insert_eD_dispensed_medication`, и теперь он работает! Спасибо!

zinon 22.06.2019 16:43

Другие вопросы по теме