我的Oracle数据库中有多个相同的模式,我想为每个传递模式名称作为参数运行类似的报告。这在WSO2中似乎不起作用,所以我该怎么办?
这是我的简单示例:假设我为每个客户组织(CustA,CustB,...)设置了架构/用户,我编写了一个查询来返回用户ID列表及其真实用户名。
假设我已登录为允许访问必要表的报表用户,我可以使用sqlplus运行以下命令从customers_profile表中获取客户A的用户列表:
select user_name, full_user_name from custa.users_profile;
同时提示输入客户名称,以下内容适用于sqlplus:
select user_name, full_user_name from &customer..users_profile;
现在,我如何获得与WSO2数据服务类似的东西?以下是我的XML定义,包括一个命名参数:对我不起作用的客户。请有人帮忙吗?感谢。
<data name="UserService">
<config id="Customer">
<property name="driverClassName">oracle.jdbc.driver.OracleDriver</property>
<property name="url">jdbc:oracle:thin:@v103/serena</property>
<property name="username">wso2</property>
<property name="password">wso2</property>
</config>
<query id="UsersProfile" useConfig="Customer">
<sql>select user_name, full_user_name from :customer.users_profile</sql>
<result element="Users" rowName="User">
<element column="user_name" name="user_name" xsdType="string"/>
<element column="full_user_name" name="full_user_name" xsdType="string"/>
</result>
<param name="customer" sqlType="STRING"/>
</query>
<operation name="UsersProfile">
<call-query href="UsersProfile">
<with-param name="customer" query-param="customer"/>
</call-query>
</operation>
</data>
答案 0 :(得分:0)
答案是升级到WSO2 DSS 3.1.1并使用QUERY_STRING类型。有关详情,请参阅我的评论。很抱歉浪费每个人的时间!