首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OpenEdge中的静态查询与动态查询

OpenEdge中的静态查询与动态查询
EN

Stack Overflow用户
提问于 2013-08-16 07:18:33
回答 1查看 4.4K关注 0票数 4

问题很常见,让我们从代码可读性、灵活性和性能的角度来看看OpenEdge中每一个问题的优缺点。

静态查询:

代码语言:javascript
复制
+   readability: convenient `buffer.field` notation
+   performance: higher (supposedly, need comments)
-/+ "global scope" allows to handle all previously used buffers, but could lead
                 to ambiguousness, so you'll have to clarify it with a table
                 name (table.field instead of field)
-   flexibility: you cannot alternate predicate-expression much,
                 even IF function is not recommended (can affect performance)      

动态查询:

代码语言:javascript
复制
+   flexibility: you can build predicate-expression completely runtime
+   flexibility: you can work with each field not specifying its name,
                 f.e. you can process all fields of certain record in cycle
+   flexibility: are reusable (need comments on this point)
+/- "local scope" allows to use only buffers specified in `SET-BUFFERS` method
-   readability: a little more code to write
-   performance: slightly slower (not sure)

欢迎增加和更正。以及与任何相关阅读的链接。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-08-16 10:55:36

静态查询的筛选条件可以“动态”更改,如下所示:

代码语言:javascript
复制
DEFINE QUERY q-name FOR table-name.
DEFINE VARIABLE h-qry   AS HANDLE      NO-UNDO.
h-qry = QUERY q-name:HANDLE.
h-qry:QUERY-PREPARE("for each table-name where table-name.field-name = 1").

从这里开始,查询将与任何普通的静态查询一样处理。

可读性:"buffer-handle:buffer-field("field-name"):buffer-value“结构是指动态缓冲区--在动态查询中使用静态缓冲区是完全可以接受的(通过缓冲区表-名称:句柄),因此动态查询缓冲区可以使用w/静态缓冲区,并且不总是需要使用它的句柄来取消引用字段。

性能:上一次进行比较时,对于相同的查询条件,动态查询比静态查询慢。好处是它们比静态查询更灵活。

可重用性:一旦设置了动态查询的缓冲区结构AFAIK,就不能更改它。但是,可以使用与静态查询相同的新筛选条件重新打开它。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18267870

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档