【问题标题】:how can we make DB tables names dynamic in wso2esb?我们如何在 wso2esb 中使数据库表名动态化?
【发布时间】:2018-11-17 13:23:21
【问题描述】:

我正在尝试将数据存储在数据库中。在这里我可以推送单个表的数据。需要就像我想对多个表使用相同的序列来推送数据。 数据库:SQL服务器 并且还需要知道如何在 cdata 中传递动态变量。例如: 设置在哪里=? ]]>

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

【问题讨论】:

  • 您能否缩小您的问题范围或提供您想要的行为示例?不清楚你在问什么。
  • 例如数据库查询来更新表,我们使用这种格式,Query:update set where 。所以在这里我想将 作为一个动态值。这是我们在 wso2esb 中执行的

标签: sql wso2 wso2esb cdata wso2ei


【解决方案1】:

不确定它是否适用于表名(仅用于值),但至少您可以尝试一下。如果您使用 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>

【讨论】:

  • 嗨,马丁,感谢您的评论。我可以知道为什么我们在 get-property 中使用传输。我是初学者,这就是为什么。
  • 嗨阿什温。您可以从传输范围访问属性,例如如果您在 get-property 中使用“transport”,则 JMS 消息属性。如果您想访问本地属性,您只需执行 get-property('TRANSPORT_VAL1')。你可以在这里找到详细的解释docs.wso2.com/display/ESB481/…
【解决方案2】:

您的代码几乎可以正常工作。但是dbo.table=&lt;table_name&gt; 没有直接获取值。所以也尝试了另一种方法。方法如下:

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')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-29
    • 2017-09-30
    • 1970-01-01
    • 2010-10-15
    • 1970-01-01
    • 2019-09-21
    相关资源
    最近更新 更多