Синтаксическая ошибка при вызове хранимой процедуры DB2 через JMeter

#sql #stored-procedures #db2 #jmeter #java-stored-procedures

#sql #хранимые процедуры #db2 #jmeter #java-хранимые процедуры

Вопрос:

Я пытаюсь вызвать хранимую процедуру DB2, которая имеет два входных параметра (оба с отметкой времени) и один выходной параметр (целое число). Я пытаюсь сделать это из JMeter JDBC Sampler и получаю исключение синтаксиса sql.

 Response code: 42884 -440
Response message: com.ibm.db2.jcc.am.SqlSyntaxErrorException: DB2 SQL Error: SQLCODE=-440, SQLSTATE=42884, SQLERRMC=PROCEDURE;DEVSCHEMA.GET_ROW_COUNT, DRIVER=4.19.26

Response headers:
1272084586, URL=jdbc:db2://<db2IP>:<port>/DB2T, UserName=<someUserName>, IBM Data Server Driver for JDBC and SQLJ 
  

Из документации IBM я узнал, что эта ошибка возникает, когда либо хранимая процедура отсутствует — что не так, неправильное имя схемы — что также не так, несоответствующее количество параметров — я проверил это, но на данный момент я сомневаюсь, потому что JMeter предоставляет отдельные поля для заполнения, и в одном из полей я могу передавать неверное значение.

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

 Query Type: Callable Statement 
Query: CALL DEVSCHEMA.GET_ROW_COUNT(?,?,?)
Parameter Values: ${__time(yyyy-MM-dd HH:mm:ss,)},${__time(yyyy-MM-dd HH:mm:ss,)},0 
Parameter Types: IN TIMESTAMP,IN TIMESTAMP,OUT INTEGER 
Variable Names:VARCOUNT 
Handle ResultSet: Store as a String
  

Может кто-нибудь, пожалуйста, выяснить, где я допускаю ошибку? Большое спасибо.

Комментарии:

1. Мое первое предположение о причине было бы именем схемы со смешанным регистром; попробуйте DEVSCHEMA вместо devSchema .

2. @mustaccio Нет, это просто любое имя, которое я ввел, потому что фактическое имя схемы было слишком длинным и указано только в верхнем регистре. В любом случае, я также только что отредактировал вопрос.

Ответ №1:

Проблема решена. Это было буквально что-то еще, о чем я никогда не задумывался. Когда я получил ту же ошибку при попытке получить доступ к тому же SP с помощью Java-кода, я связался с командой DB2, которая написала хранимую процедуру. И проблема была с SP. По их словам, execute доступ был предоставлен, поэтому после детализации здесь и там они предпочли создать новый SP, который работал без каких-либо проблем. В остальном все было идеально со стороны JMeter.