如何在WSO2数据服务服务器查询中动态更改部分表名?

时间:2016-12-05 10:50:07

标签: sql wso2 wso2dss

我需要使用参数来完成DSS查询中表名的一部分。 例如:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;


namespace ConsoleApplication29
{
    class Program
    {
        static void Main(string[] args)
        {
            var ExportModelMachetas = new object[][] {
                new object[] { "ufImportProduesPrioritateXContactare", "IdArticol", "string", "1"},
                new object[] { "ufImportProduesPrioritateXContactare", "Prioritate", "string", "2"},
                new object[] { "ufImportExcelCaracteristiciUtilizatorXContactare", "IdUtilizator", "string", "1"},
                new object[] { "ufImportExcelCaracteristiciUtilizatorXContactare", "IdLocatie", "string", "2"},
                new object[] { "ufImportExcelCaracteristiciUtilizatorXContactare", "TipUtilizator", "string", "3"}
            };
            List<XElement> results = ToXML(ExportModelMachetas); 

        }
        static List<XElement> ToXML(object[][] ExportModelMachetas)
        {
            List<XElement> results = new List<XElement>();

            foreach (var ExportModelMacheta in ExportModelMachetas)
            {
                XElement newExportModelMacheta = new XElement("ExportModelMacheta", new object[] {
                    new XAttribute("Macheta", ExportModelMacheta[0]),
                    new XAttribute("NumeColoana", ExportModelMacheta[2]),
                    new XAttribute("TipDeDate", ExportModelMacheta[2]),
                    new XAttribute("Pozitie", ExportModelMacheta[3]),
                    new XAttribute("FromatMacheta", "xls"),
                });
                results.Add(newExportModelMacheta);
            }

            return results;
        }
    }
}

其中SELECT .... FROM prefix_<env>tablename; 可以是<env>之类的参数。

在某些系统(如SpagoBI)中,可以使用以下环境参数完成此操作:

QUERY_STRING

并且在查询参数替换期间,表名将被解析为SELECT .... FROM prefix_{env}tablename; (在env = 001的情况下)。

在DSS中,我只有绑定参数语法(prefix_001tablename),因为没有确切的令牌标识(:env)而无法使用。

我看一下代码(ExpressionQuery.java),但我找不到任何方法来解决这个问题。

重要信息:我没有办法改变表命名(我需要与第三方数据库进行交互)。

任何人都可以帮助我吗? 谢谢!

1 个答案:

答案 0 :(得分:0)

如果我正确理解了这个问题,我想问题是,你不能映射一个名为&#34; env&#34;的命名参数。查询&#34;前缀_:envtablename&#34;,其中只有:env应该被翻译。所以我们在这里可以做的是&#34;?&#34;在查询中,使其成为QUERY_STRING类型参数。所以理想情况下你应该有&#34; prefix_?tablename&#34;这样的查询。有了这个,你可以按顺序传递参数吗?查询中提到了字符。

干杯, 长香。