如何在wso2esb中使DB表名称动态化?

时间:2018-06-07 14:59:10

标签: sql wso2 wso2esb cdata wso2ei

我正在尝试将数据存储在Database.Here我能够推送单个表的数据。需要就像我想利用相同的序列为多个表推送数据。 DB:SQL Server 并且还需要知道如何在cdata中传递动态变量。例如:  设置在哪里=? ]>

这里我们如何设置为动态 在此先感谢:)

2 个答案:

答案 0 :(得分:0)

不确定它是否适用于表名(仅用于表值),但至少你可以尝试一下。如果使用sql语句设置属性并传递它,它可能正常工作。

<statement>
                        <sql>
                             update dbo.table = ? WHERE id = ?</sql>
                        <parameter expression="get-property('transport','TRANSPORT_VAL1')"
                                   type="VARCHAR"/>
                        <parameter expression="get-property('transport','TRANSPORT_VAL2')" type="INTEGER"/>
                     </statement>

答案 1 :(得分:0)

您的代码几乎可以使用。但是dbo.table=<table_name>没有直接获取值。所以尝试了另一种方式。以下是方式:

DECLARE 
     @tablename AS nvarchar(100),
     @col1 AS nvarchar(100),
     @val1 AS nvarchar(100),
     @val2 AS nvarchar(100);
SET @tablename = '<table_name>';
SET @col1 = '<column_name>';
SET @val1 = '<column1_value>';
SET @val2 = '<column2_value>';
DECLARE @query_a AS nvarchar(500);
SET @query_a = 'Update '+@tablename+' set '+@col1+'='''+@val1+''' WHERE number ='''+@val2+''''
EXECUTE sp_executesql @query_a;

内部参数名为get-property('table_name')get-property('column_name')