我无法在输出流中获得输出流中的MySQL过程调用的输出参数,而该过程调用步骤为Pentaho。
我很难从MYSQL存储过程中检索参数到流。我认为这可能是一种错误,因为它只发生在Integer out参数上,它与String out参数一起工作。我得到的例外是:
Invalid value for getLong() - '我认为参数设置正确,就像您在ktr中看到的那样。
您可以以这种方式复制该bug:
模式
create schema if not exists test;
use test;
DROP PROCEDURE IF EXISTS procedure_test;
delimiter $$
CREATE PROCEDURE procedure_test(IN in_param INT UNSIGNED, OUT out_param INT UNSIGNED)
BEGIN
SET out_param := in_param;
END
$$KTR您可以使用这些步骤创建在这里下载 .ktr文件。您只需设置到MySQL测试模式的连接即可。
其他数据
任何来自社会的帮助都将受到高度赞赏。
提前感谢!
发布于 2014-05-09 21:47:23
如果将number (以及DB级的decimal )用作输出参数类型,则错误似乎不会发生。因此,这可能被用来作为一个工作。
使用此语句的DB过程(由phpMyAdmin返回):
CREATE DEFINER = `root`@`localhost`
PROCEDURE `procedure_test` ( IN `in_param` INT ZEROFILL,
OUT `out_param` DECIMAL( 10 ) )
NOT DETERMINISTIC NO SQL SQL SECURITY DEFINER
BEGIN
SET out_param =2 * in_param;
END我能够运行这个转换

读取此输入
IN_VALUE
1
2
3
99产生这个输出
<?xml version="1.0" encoding="UTF-8"?>
<Rows>
<Row><OUT_VALUE> 2,0</OUT_VALUE> </Row>
<Row><OUT_VALUE> 4,0</OUT_VALUE> </Row>
<Row><OUT_VALUE> 6,0</OUT_VALUE> </Row>
<Row><OUT_VALUE> 198,0</OUT_VALUE> </Row>
</Rows>发布于 2014-05-13 11:06:59
我使用这样的SQL脚本步骤解决了这个问题:
CALL procedure_test(?, @output_value);
INSERT INTO output_value_for(in, out) VALUES (?, @output_value);SQL脚本步骤不允许输出值流,但是它是解决我的问题的更好的解决方案。在过程执行之后,我在MySQL数据库中插入了该过程的输出值,因为我需要持久化这种关系。
然而,我认为马库斯的答案是更好的方法提出的问题。如果你有这个问题,你应该把它当作工作来考虑。
https://stackoverflow.com/questions/23444099
复制相似问题