首页 文章

获取存储过程camel-sql的输出参数

提问于
浏览
0

我正在使用camel编写一些路由并在JBoss Fuse 6.2中运行它们 .

我想在SQL Server数据库中执行存储过程并读取输出参数的值 .

我这样做:

from("direct:WRITE_IN_STORED_PROCEDURE")
    .to("sql:exec PROCEDIMIENTO_TEST 'TEST_DATA'?dataSource=dataSource")
    .log(LoggingLevel.INFO, "[${body}]");

这条路由实际上是在数据库中写的,我检查过,根据存储过程逻辑,值'TEST_DATA'在数据库中 .

问题是:我不知道如何传递以及如何读取OUT参数 . “exec”调用不会将过程的结果放在正文中(就像我使用“select”时) .

我必须做什么?

谢谢!

2 回答

  • 1

    sql组件尚不支持存储过程 .

    有一张票:https://issues.apache.org/jira/browse/CAMEL-4725

    并且有代码在工作:https://github.com/apache/camel/pull/749

    例如,您可以使用mybatis组件,因为mybatis支持调用存储过程:http://camel.apache.org/mybatis

  • -1

    语法应该与下面的db:mysql中的调用完全相似

    mysql>delimiter // 
    mysql>create procedure selectusers(out param1 int) begin select count(*)
       from mysql.user; end//
    mysql> delimiter ;
    mysql> call selectusers(@param1);
    +----------+
    | count(*) |
    +----------+
    |        2 |
    +----------+
    1 row in set (0.00 sec)
    
    Query OK, 0 rows affected (0.00 sec)
    

    与骆驼相似,你的路线现在看起来如下

    <to uri="sql:exec call selectusers(@param1)?datasource=datasource/>
    The result if you print would be as below
    [) thread #0 - file://src/data/] rhalling-unmarshalling-exmaple INFO  [{count(*)=2}]
    

相关问题