为的UniData UniCommand差异(UniCommand differences for

2019-10-17 12:13发布

我是新来UniObjects的世界,因为我已经在.NET的土地,因为它首次亮相。 构建一个简单的应用程序返回一个UniCommand发言中,我注意到,有如何的UniData以及如何UniObjects解析UniCommand statments一些重大分歧的选择列表之后。 从我发现它看起来是PICK使用的口味差异。

什么我问的是其他UniObjects程序员(译注或UniData的)的,可以执行在这里列出它们的命令的差异或知道知道。 我问这是因为什么,不能是命令的文档是很难找到。

下面是一个例子:(都返回来自相同来源的相同的结果)

我们将进入的UniData:(分析器错误如果UniCommand给出)

  • 选择颜色= “BLU]”

应该怎样进入UniObject的UniCommand:

  • 与@ID LIKE选择颜色“BLU ......”

注意的UniData的通配符是如何“]”(方括号),其中UniCommand是“......”(省略号)。 还要注意的UniData如何接受平等的运营商和UniCommand如何使用LIKE运算符和WITH。

此外,如果任何人有所有可用的命令链接到一个文件,他们可以在这里发布它。

Answer 1:

该ECLTYPE“U”命令的工作方式与TCL的交互式会话,但我可以看到它是如何会非常棘手,从UniObjects永久设置。

一个字的口碑Unidata的技巧,是很方便的知道的是小写的动词总是 EXECUTE AS ECLTYPE U.所以你会得到你正在寻找的行为,无论该帐户的味道。 所以这应该很好地工作:

select COLORS WITH @ID LIKE "BLU..."


Answer 2:

你所描述的差别是在UniData的ECLTYPE这是完全独立UniObjects的差异。 如果您设置的UniData帐户的ECLTYPE为“U”它将接受语法:

SELECT COLORS WITH @ID LIKE "BLU..."

如果设置ECLTYPE为“P”它将接受语法:

SELECT COLORS = "BLU]"

对于.NET文档指出UniObjects:

“在系统中的UniData,ECLTYPE U是最好的。你可能会遇到与其他ECLTYPE或UDT.OPTIONS设置的变化。”

这不是很清楚,我从是否UniCommands使用不约而同执行文档ECLTYPE "U"或是否有一个参数,让您配置解析器类型。 您可以尝试执行一个ECLTYPE "P"从UniObjects会话命令,然后看后面有“P”语法UniCommands是否被解析为这样的。



Answer 3:

问题是,你的Unidata的环境设置与PICK解析器解析命令,但UniCommand对象执行Unidata的原生解析器。 (等,并...语法与Unidata的自带的模式,这是从总理的信息建模。)

我看了关于UniSession或UniCommand属性,将更改用于execute方法的解析器,但一个也没找到。 然而,UniCommand的文件说,它相当于内执行基本的语句。 这一点,和几个UDT.OPTIONS命令,可以打开门的解决方法,可以让你使用PICK命令语法即使UniObjects不直接支持它。

Unidata的的Execute命令可以使用多个命令,通过@AMs分离,将执行他们一个接一个,都已经被处理之后才返回。 (这有点像一个小PROC)。所以,在过去建立您的命令与属性1至少“UDT.OPTIONS 2 ON”命令,随后你可能需要的任何其他人,最后是你想要的PICK命令属性。 然后通过你的UniCommand送一大堆一次对象的Execute方法。


对于UDT.OPTIONS 2的文档如下:

Determines the parser the system uses to interpret UniQuery commands.
    ON System uses the Pick® parser.
    OFF System uses the UniData parser.

有挑兼容性相关的其他几个UDT.OPTIONS。 期待中的文档,特别是udto.pdf的“Pick®兼容性”部分。


说了这么多,当我使用UniObjects,我只用它来调用子程序基础,并处理一切都在服务器端程序别的。

编辑:C#代码示例

UniSession s = UniObjects.OpenSession("machine", "user", "password", "/path/to/account", "udcs");
UniCommand c = s.CreateUniCommand();
c.Command = "UDT.OPTIONS 2 ON" + "\xfe" + "SELECT COLORS = \"BLU]\"";
c.Execute();

在“\ XFE”是属性标记。 (这是CHAR(254)在皮克发言。)希望这有助于。



文章来源: UniCommand differences for UniData