Я новичок в scriptella и нашел, что он очень полезен до сих пор, но попал в следующий roadblock. У меня есть SQL-процедура, которая уже существует в базе данных MYSQL, похожей на следующую.Scriptella and (mysql) Сохраненные процедуры «OUT» Параметр
DELIMITER //
CREATE PROCEDURE FOO(IN input_param INT, OUT output_param1 INT, OUT output_param2 INT)
BEGIN
/* real FOO sets output_params (conditionally) based on input_param */
/* AND updates an internal table */
SET output_param1 = 1;
SET output_param2 = 2;
END//
DELIMITER ;
Я хотел бы призвать/вызвать эту процедуру внутри Scriptella, похожее на следующее:
<query connection-id="in">
SELECT SomeColumn FROM SomeTable;
<query connection-id="out1">
CALL FOO(SomeColumn, @OUT1, @OUT2); // ERROR1 exception from this line, see below
<script connection-id="jexl">
etl.globals['OUT1'] = @OUT1; // ERROR2 doesn't like "@"
etl.globals['OUT2'] = @OUT2;
</script>
</query>
<query connection-id="out2">
INSERT INTO AnotherTable (col1, col2)
VALUES (${etl.globals['OUT1']}, ${etl.globals['OUT2']});
</query>
</query>
ERROR1 - Scriptella ожидает строку «CALL Foo (SomeColumn, @ OUT1, @ OUT2) ;» для возврата результата.
Исключение драйвера: java.sql.SQLException: ResultSet - это UPDATE. Нет данных. ** Если я добавлю «SELECT 1» в конец хранимой процедуры SQL, он вернет значение и устранит эту ошибку.
ERROR2 - код выше пытается сохранить параметры OUT в качестве временных переменных SQL, которые не работают в Scriptella.
Driver исключение: org.apache.commons.jexl2.JexlException: [email protected] лексический анализ не удался
** Это не нравится @ символы или использование временных переменные здесь.
ВОПРОСЫ Поддерживает ли Scriptella вызов хранимых процедур и возврат параметров OUT? Я пробовал несколько обходных решений/взломов для этого, но до сих пор не сделал никакого прогресса.