Я новичок в сценарии оболочки, и я хочу вызвать хранимую процедуру MySQL и сохранить результат хранимой процедуры в переменной и передать переменную для вставки запроса для сохранения значений в другой таблице с типом данных JSON.

Файл сценария оболочки:

selectvar="CALL lead_status_sale(input1,input2,@total,@valid,@data);"

selectvar1="select @total,@valid,@data;"

mysql --user=root --password=xxx db1 << eof 
$selectvar
insertvar = $selectvar1
eof

mysql --user=root --password=xxx db2 << eof 
insert into day values $insertvar;
eof

Если я вызываю хранимую процедуру, она работает нормально, когда я иду на вставку запроса, у меня появляется ОШИБКА

ERROR 1064 (42000) at line 1: 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 '@valid @qualified  @sales  @closedwon  @deal   @cold_lead  @business   @ga @ga_valid   @ga' at line 1
1
Sarath 14 Дек 2017 в 13:25

1 ответ

Лучший ответ

Попробуйте это: если ваш SELECT возвращает более 1 строки:

#!/bin/bash

selectvar="CALL lead_status_sale(input1,input2,@total,@valid,@data); select @total,@valid,@data;"
insertvar=(`mysql --user=root --password=xxx db1 --execute="${selectvar}" | sed '1d'`)
for i in "${insertvar[@]}"
do
    mysql --user=root --password=xxx db2 --execute="insert into day values ${i};"
done
0
Viktor Khilin 14 Дек 2017 в 12:47