Oracle Service Bus数据库适配器

时间:2012-11-06 05:17:07

标签: web-services

我正在尝试使用Oracle Service Bus数据库适配器来创建基于REST的服务。在查询中传递了四个参数,其中任何时候只传递2个参数。例如:

http://www.example.com/findPerson/personId=&birthDt=&ss=&lastname=

birthDt始终通过,但其他3个中只有1个通过。其他参数为空。

对于我进行数据库查找,我需要的只是birthDt和其他3个传递的。

OSB中是否有办法根据传入的内容进行条件选择?我是否执行选择或“按示例查询”或“调用存储过程”以返回我需要的内容?

在对REST服务调用的响应中,我需要以XML格式返回多个元素。

1 个答案:

答案 0 :(得分:2)

您可以在后端创建一个存储过程,其中包含所有输入参数作为输入(其中3个具有'default null')

创建或替换过程my_procedure   (varchar2中的p_parm1默认为null,等等。

并在存储过程中检查填充了哪些参数以构造select语句。 在osb上的xquery中,您需要检查其余调用中的哪些参数已填入,以将这些参数映射到存储过程调用的可选参数。

或者你可以使用db adapter中的'select statement'选项并使用这样的结构:

选择* 来自my_table 其中kolom1 =:p_name或:p_name为空

现在,您可以根据输入参数的值扩展整个查询

同样对于这种情况,你需要在osb中使用xquery,它将你的rest参数“映射”到select语句参数。 最简单的方法是我想将整个查询参数字符串传递到你的xquery并使用substring / substring-after等来获取不同的参数以及它们的值并将这些值映射到数据库的输入xml有效负载适配器调用。

相关问题