如何用动态“查询”代替静态“查询”工作方式?

2024-04-06

In this 其他问题 https://stackoverflow.com/questions/66472235/how-to-conditionally-compile-in-case-of-an-existing-table,我问如何处理可能定义或未定义表的情况。我试图遵循的建议解决方案是使用动态“查询”而不是静态查询。不幸的是我不知道该怎么做,有人可以帮助我吗?让我举一个例子:

静态工作方式:

FIND Table1 WHERE Table1.field1          = 123
                AND Table1.field2        = Current-Table.field2
                AND UPPER(Table1.field3) = "Constant-string"
                AND Table1.field4        = temp-table.field4 NO-ERROR.
IF NOT AVAILABLE Table1
  THEN DO:
           CREATE Table1.
           ASSIGN Table1.field1 = 123
                  Table1.field2 = Current-Table.field2
                  Table1.field3 = "Constant-string"
                  Table1.field4 = temp-table.field4.
           RELEASE Table1.
       END.

动态工作方式:

CREATE BUFFER h-Table1 FOR TABLE "Table1" NO-ERROR.
IF VALID-HANDLE(h-Table1)
THEN DO:
         L-Found = h-Table1:FIND-FIRST("WHERE Table1.field1 = " + STRING(123) + 
                                         "AND Table1.field2   = " + STRING(Current-Table.field2) +
                                         "AND UPPER(Table1.field3) = 'Constant-string'" + 
                                         "AND Table1.field4 = " + temp-table.field4) NO-ERROR.
         IF NOT L-Found
         THEN DO:
                  h-Table1:BUFFER-CREATE("").
              END.
         ELSE MESSAGE "FOUND".
     END.

Is it BUFFER-CREATE或者其他方法,我应该如何填写参数(例如ASSIGN Table1.Field1 = 123), ...?


Use:

def var hb as handle no-undo.

create buffer hb for table "mytable".
hb:buffer-create().
assign
   hb::myfield = 123
   hb::another = "ok"
   .
hb:buffer-release()

finally:
   delete object hb no-error.
end finally.

请注意 hb::myfield 是

hb:buffer-field('myfield'):buffer-value

还要注意,使用动态对象时,您要负责垃圾收集。如果您创建了它,则需要将其删除。

动态查找独特部分:

def var hb     as handle  no-undo.
def var lfound as logical no-undo.

create buffer hb for table 'Table1'.

lfound = hb:find-uniqe(
            'where field1 = 123'
            +  ' and field2 = ' + quoter( current-table.field2 ) )
            +  ' and upper( field3 ) = "constant-string"'
            +  ' and field4 = ' + quoter( temp-table.field4 ) 
         ) no-error.

或使用替代品:

lfound = hb:find-unique(
            substitute(
               'where field1 = &1':u
               +  ' and field2 = &2':u
               +  ' and upper( field3 ) = &3':u
               +  ' and field4 = &4':u,
               123,
               quoter( current-table.field2 ),
               quoter( 'constant-string' ),
               quoter( temp-table.field4 )
            )
         ) no-error.

您很快就会想要创建一个查询构建器类/函数来处理创建查询,并可能还处理您现在负责的运行时验证。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何用动态“查询”代替静态“查询”工作方式? 的相关文章

  • 向所有请求添加Where条件EF6

    我的大部分实体 并非全部 有两个属性称为CompanyId and Deleted 如何为所有选择请求自动插入这两个属性 而不是在整个应用程序中的每个查询上手动设置 Example db MyEntity Where me gt me Id
  • 将函数结果分配给表变量

    SQL Server 2000 2005 函数获取表名和字段名作为参数 并返回函数内动态查询的结果 结果应分配给Table将在存储过程中进一步使用的变量 如何实现这一目标 我收到错误 只能从函数内执行函数和扩展存储过程 Declare Da
  • 使用选择查询动态添加列

    我有一张表 默认有 20 列 这 20 列命名为 D1 D2 D3 D20 现在通过选择查询我想动态添加其他列 对于前 D21 D22 D31 那么我如何编写一个查询来动态添加此列并增加值 最大限制为 31 请帮助 默认表列D1 D2 D3
  • Oracle 中使用 Hibernate Criteria API 进行动态查询 - 性能

    我必须使用 Hibernate 并从 Oracle 检索数据 但问题是传递给查询的参数数量并不总是相同 为了简单起见 我们考虑以下查询 从 TAB 1 选择 COL 1 COL 2 COL N 其中 COL 1 in 传递给 in 子句的参
  • 在 PL/pgSQL 中动态执行查询

    我已经找到了我在 Oracle 和 SQL Server 上提出的问题的解决方案 我认为 但似乎无法将其转换为 Postgres 解决方案 我正在使用 Postgres 9 3 6 这个想法是能够生成有关表内容的 元数据 以用于分析目的 这
  • 如何在sql动态查询中传递变量this

    我使用动态查询来传递变量 select a TableName COUNT a columnvalue as count from Settings a where a ColumnValue in columnvalue and a Va
  • 正在进行的赋值语句的效率是多少-4gl

    为什么使用赋值语句比不使用赋值更有效 同事们说 assign a 3 v 7 w 8 比以下方法更有效 a 3 v 7 w 8 why 你总是可以自己测试一下 但是 是的 它的效率稍微高一些 或者这是我最后一次测试它 原因是编译器合并了语句
  • 创建与数据库表同名的缓冲区

    我在很多地方都遇到过这段代码 DEFINE BUFFER Customer FOR Customer 我有两个问题 这样做的目的是什么 为什么创建与表同名的缓冲区是有益的 当编写代码访问该表 缓冲区时 Progress 如何知道是直接访问
  • 使用面向对象编程进行 OpenGE 的优点和缺点

    我了解使用面向对象编程作为概念的优点和缺点 我正在寻找的是专门使用 oo in Progress openedge 的优点和缺点 我需要考虑哪些挑战吗 该语言的某些部分是否与 oo 不能很好地配合 像这样的东西 编辑 使用10 2b 我会给
  • 哪个 ActiveX 控件(*.ocx 文件)处理 WMI?

    昨天我问了关于在 OpenEdge Progress 4GL 中启动命令行并捕获结果的问题 https stackoverflow com questions 65504126 how to catch os command results
  • 输出使用动态 PL/SQL 执行的 SELECT 的结果

    使用 T SQL SQL Server 这再简单不过了 DECLARE MyStatement AS NVARCHAR max SELECT FROM MYTABLE EXEC MyStatement 然而 使用 PL SQL Oracle
  • 如何在 4gl 中使用变量进行“分组”

    有没有办法在 4gl 查询中按表中的字段对记录进行分组 My code define variable v invoice as inte no undo define variable v sell price as decimal no
  • 经过一段时间后,OpenEdge ABL 自动关闭是/否消息

    现在我有 消息 Hello World 查看为警报框警告按钮是 否更新 lVariable 如何在 14 秒后自动点击 否 如何以 另一种方式 做到这一点 DEFINE FRAME f message This is your messag
  • 将 XML 文件读取到 Dataset in Progress-4gl

    My XML File是这样的
  • Spring Data动态查询

    我正在尝试使用 spring 数据设置一个动态查询 基本上我有一个具有一堆特征的数组 我需要根据这些特征组装查询 几乎类似于 WHEREcharacteristic A ANDcharacteristic B AND特征 C 但特征的数量可
  • unixodbc 驱动程序管理器无法在安装时打开指定的库

    我正在使用 ArchLinux 并且正在尝试安装 OpenEdge 进度驱动程序 以便我可以通过 PHP 访问它 我已经安装了 unixodbc 软件包和驱动程序 但是当我通过 isql 或 PHP 测试连接时 出现相同的错误 isql 3
  • 如何登录 OpenEdge Progress?

    我找到了在 Progress 4GL 中记录某些内容的不同方法 但没有一个令人满意 简单的MESSAGE语句的缺点是它对帧的处理非常糟糕 ON CHOOSE OF btn Q4 DO MESSAGE Line 1 MESSAGE Line
  • 如何汇总正在进行的编程

    我正在为 MRP 程序编写一份报告 其中包含一个我计算的订购数量的字段 如果它是小数点 我需要将其四舍五入 例如 2 33需要向上舍入为3等等 我努力了 oder round order 0 但这只给我 2 00 我需要将该数字四舍五入到下
  • 如何用动态“查询”代替静态“查询”工作方式?

    In this 其他问题 https stackoverflow com questions 66472235 how to conditionally compile in case of an existing table 我问如何处理
  • 我的 SQL 动态查询执行并将输出获取到存储过程中的变量中

    我在 My sql 存储过程中生成动态查询 我想将此查询的结果放入输出参数中 这个怎么做 CREATE PROCEDURE searchInvoice OUT numOfRecords INT BEGIN DECLARE query1 TE

随机推荐

  • 构造函数不能是虚拟的

    在其中之一互联网上的 C 教程 http www bogotobogo com cplusplus constructor php 我发现了下面关于为什么构造函数不能是虚拟的描述 我们不能声明虚拟构造函数 我们应该指定准确的 编译时对象的类
  • Leaflet R 大地图的性能问题

    我想知道是否有其他人在使用 R 中的传单包绘制大量标记和多边形时遇到类似的问题 这通常应该是这样的 但是 当我放大 缩小地图时 多边形和标记显然不合适 或者您可以说底图没有正确调整 下面包含一个示例 当我绘制较小的区域或几个标记时 我不会遇
  • Typescript 事件监听器 - 类型到 props 映射

    export enum GameEventType EVENT ONE event one EVENT TWO event two EVENT THREE event three export type GameEvent type Gam
  • 如何通过另一个 DLL 访问一个 DLL 中的命名空间?

    我有多个 DLL 我自己管理或我自己不管理 我想将它们包含在 CoreLib dll 中 这样我就不必在每个使用这些 DLL 的应用程序中包含 可能 数百个 DLL 我通过直接引用 DLL 来包含 DLL 因此 我还想在我正在创建的应用程序
  • 局部变量初始化应该是强制的吗?

    未初始化的本地变量 特别是指针 引起的维护问题对于 任何做过一些 c c 维护或增强的人来说都是显而易见的 但我仍然看到它们 并且偶尔会听到作为其理由的性能影响 在 c 中很容易证明冗余初始化已被优化 less test c include
  • 刷新 Visual Studio Code 文件列表

    Visual Studio Code 版本 0 10 11 在 OSX 上 不会刷新文件夹中的文件 有什么办法可以强制刷新吗 目前我必须关闭并重新打开整个程序 编辑 与此同时 重新加载按钮已添加到文件资源管理器小部件中 Use the wo
  • Spring/JPA/JSF 的异常处理策略

    我们在我们的应用程序中使用 JSF Spring 和 JPA 我们正在尝试简化项目的异常处理策略 我们的应用程序架构如下 UI JSF gt 托管 Bean gt 服务 gt DAO 我们正在为 DAO 层使用异常翻译 bean 后处理器
  • VSCode 运行 Python 2 而不是 3

    我在 VSCode 中使用 Python 如果我使用 Cmd Shift P 并输入 Run Code 它会使用 Python2 运行代码 即使我已指定它使用 Python3 我已阅读本教程 如何强制 VSCode 使用 Python 3
  • 相当于Java 8日期和时间API中的jodatime间隔[重复]

    这个问题在这里已经有答案了 Java 8 处理时间的方式似乎已经改进了很多 以至于我开始考虑替换jodatime http www joda org joda time 在某些情况下 但我缺少的是相当于Interval http www j
  • 计算第一个数字相似的所有元组值的平均值

    考虑元组列表 7751 0 9407466053962708 6631 0 03942129 7751 0 1235432 如何以Python方式计算所有元组值的平均值 其中第一个数字相似 例如答案必须是 7751 0 5321449026
  • 如何通过蓝牙将文件从Android发送到电脑

    任何人都可以给出蓝牙服务器客户端的工作示例 从Android到计算机 我想将数据从 Android 手机传输到 C 应用程序 现在我使用下面的 Android 代码 效果很好 但它仍然无法将数据传输到我的计算机 可能无法写入这些数据 任何人
  • 我正在尝试从 firebase 获取数据,但 flutter 在 StreamBuilder 上显示 null 安全错误

    我在用着StreamBuilder在其中 我有一个任务列表 它从快照中获取输入并相应地显示数据 但是在处理快照数据时我遇到了空安全问题 代码如下所示 StreamBuilder
  • Laravel with Eloquent 不会在数据库中保存模型属性

    我正在使用 php laravel 框架构建一个网络应用程序 当我将模型保存到数据库时 它会进行插入 但不会保存模型属性 我不知道如何修复 因为 laravel 日志没有显示任何错误 任何想法 有模型 The database table
  • iOS 10 GM 与 xcode 8 GM 导致视图因圆角和 ClipsToBounds 消失

    我使用 iOS 10 Beta 7 和 Xcode 8 beta 测试了我的应用程序 一切正常 然而就在几分钟前 我安装了两者现在可用的通用汽车版本 并遇到了一个奇怪的问题 我在我的应用程序和我正在使用的自定义单元格中使用自定义表格视图单元
  • HQL 到 SQL 转换器

    有谁知道如何将 NHibernate HQL 转换为 SQL 脚本 由于 HQL 翻译取决于您的映射以及运行时行为 因此我认为不太可能有一种方法可以静态地执行此操作 您可以针对真实数据库运行 HQL 并通过特定 RDBMS 或 NProf
  • 为什么我的 Android 应用程序一直告诉我需要定义一个已定义的 ListView id?

    每当我尝试运行我的应用程序时 都会引发以下异常 01 22 00 40 51 868 ERROR AndroidRuntime 2219 java lang RuntimeException 无法启动活动 ComponentInfo Red
  • 如何使用 Linq 从父级列表中选择复杂的子对象并对其进行分组

    如何使用 Linq 从父级列表中选择复杂的子对象并对其进行分组 我有一个订单每个订单对象都有一个订单产品变型列表 OrderLineList 以及每个订单产品变体对象有 ProductVariant 然后产品变体对象将有一个Product包
  • 如何修改C# Chart控件图表面积百分比

    如果我有一个图表控件有 2chartAreas其中 图表控件默认将图表区域放在彼此的顶部 使每个区域占据图表控件可用大小的 50 有没有办法改变图表区域的百分比 以便我可以说 让顶部图表占据该区域的 75 底部图表占据该区域的 25 所以
  • 现在采用 HTML 5 进行网站重新设计有何优点和缺点?

    我正在对一个大型网站进行重新编写和重新设计 我一直在阅读 HTML 5 并想在采用该设计实现之前了解它的缺点 该设计需要在 A 级浏览器中工作 是的 包括 IE6 所以我想知道如何
  • 如何用动态“查询”代替静态“查询”工作方式?

    In this 其他问题 https stackoverflow com questions 66472235 how to conditionally compile in case of an existing table 我问如何处理