2017-02-16 3 views
1

Вы по-прежнему имеете дело с этой проблемой?Узел не возвращает значения для успешной хранимой процедуры

CALL eveql.sp_matFinder('ishkur'); 

Успешно возвращается в DBeaver и возвращает 15 строк для меня. Я выполнил этот синтаксис в node.js для вызова.

connection.query('CALL eveql.sp_matFinder(?);', [itemName], function(err, rows){ 
     if(err) throw err; 
     console.log(rows); 
     console.log(JSON.stringify(rows)); 
}); 

.query (успешно возвращаются, однако я получаю пустой массив, в котором должны быть мои результаты.

[ **[]**, 
OkPacket { 
fieldCount: 0, 
affectedRows: 0, 
insertId: 0, 
serverStatus: 34, 
warningCount: 0, 
message: '', 
protocol41: true, 
changedRows: 0 } ] 
Data : [[],{"fieldCount":0,"affectedRows":0,"insertId":0,"serverStatus":34,"warningCount":0,"message":"","protocol41":true,"changedRows":0}] 

Так что я тоже в недоумении. Это может быть проблемы с версиями MySQL против узел версии.

+0

Вместо вызова хранимой процедуры попробуйте отправить простой старый оператор SELECT? Это может помочь обеспечить работу JavaScript-кода. – andrunix

+0

Я смогу проверить эту теорию позже сегодня. Посмотрим, если это будет полезно. – ElementCR

+1

Посмотрите на эту статью и используйте параметры IN/OUT. Обратите внимание на синтаксис в инструкции CALL. https://www.sitepoint.com/using-node-mysql-javascript-client/ – andrunix

ответ

1

в соответствии с MySQL docs

процедура вызывается с помощью вызова заявление (SE e Раздел 13.2.1, «Синтаксис вызова») и может только возвращать значения с использованием выходных переменных. Функция может вызываться изнутри оператора точно так же, как любая другая функция (то есть, вызывая имя функции) и может возвращать скалярное значение .

Либо использовать функцию для возврата набора результатов, либо использовать параметр OUT для возврата скалярного значения.

Смежные вопросы