这是我当前的代码
def var hbTT as handle.
for each Cust:
hbTT:buffer-create().
assign
hbTT::Name = Cust.Name
hbTT::address = Cust.Address.
end.
Run Code Online (Sandbox Code Playgroud)
现在我想做的是遍历 hbtt。我怎样才能做到这一点?
我试过
for each hbTT:
/* Do something */
end.
Run Code Online (Sandbox Code Playgroud)
我得到的错误是
未知或不明确的表 hbTT。(725)
谢谢你
我正在尝试在Progress SQL中做这样的事情(这不是POSTGRES!)
SELECT
CASE WHEN code LIKE '%foo%' THEN 'Y' ELSE 'N' END as foo
FROM
bar
Run Code Online (Sandbox Code Playgroud)
但是Progress不支持LIKE运算符.INSTR看起来它可能会完成这项工作,但它是一个Progress扩展,我正在使用的数据库不支持.是否有另一种使用标准ODBC函数实现此目的的方法?
谢谢
正在进行的关键工作4GL的确切用途是什么?我没有从开放边缘的关键字帮助中获得清晰的想法.by和break by关键字之间的主要区别是什么?
我有一个名为 tt 的临时表。我想使用我的临时表创建一个具有相同字段名称和类型的数据库表。
我不知道在Progress-4gl 中该怎么做。这可能吗 ?
谢谢。
我正在寻找一种以Progress “ .d”文件格式手动转储OpenEdge数据库表中的记录子集的最简单方法。
我能想到的最好方法是创建一个额外的测试数据库,该数据库具有与源数据库相同的架构,然后使用FOR EACH和BUFFER-COPY语句将记录的子集复制到测试数据库中。然后,只需使用“ 转储数据和定义表内容(.d文件)...”菜单选项从测试数据库中导出数据即可。
这对我来说似乎很简单,但我找不到合适的属性.出于错误报告的目的,我想知道我所在的内部程序的名称.
以下是最简单的示例:
运行测试.
程序测试.
/*我怎么能在这里显示程序名称'test'?*/
结束程序.
我正在使用Progress OpenEdge.
我创建了一个数据集并嵌套了一些临时表.我放入特定字段以关联临时表.
在xml中,如果要隐藏用于关联临时表的字段,可以在定义临时表的字段旁边使用xml-node-type"HIDDEN".
因此,当您在"数据集句柄"之后查看xml文档时:write-xml("whatever-paramters").没有看到关系字段.
问题......
我如何用json做同样的事情?
我找不到任何类似于xml的xml-node-type"HIDDEN"的东西.
我找不到有关如何重新抛出我刚刚捕获的相同异常的任何信息。
我的 catch 表达式如下所示:
CATCH ex1 AS Progress.Lang.Error :
MESSAGE ex1:NumMessages.
DEFINE VARIABLE iteration AS INTEGER NO-UNDO.
DO iteration = 1 TO 6:
clsLog:inf(ex1:GetMessage(iteration)).
END.
clsLog:inf(SUBSTITUTE("ex1:CallStack: &1", ex1:CallStack)).
END CATCH.
Run Code Online (Sandbox Code Playgroud)
如何在不丢失它携带的任何消息或数据的情况下重新抛出此特定异常?或者,如果您可以在 Internet 上找到有关重新抛出正在进行的异常的任何信息,我将不胜感激。
在单元测试中,我需要验证程序在处理表时是否跳过锁定的记录。我一直无法设置锁定记录,因为测试无法锁定自己,这很有意义。
这是我试图实现的目标的示例。
DEV VAR v_isCommitted AS LOGI NO-UNDO.
DEF VAR hl AS HANDLE NO-UNDO.
DEF BUFFER bufl FOR tablename.
hl = BUFFER bufl:HANDLE.
LOCKED_RECORDS:
DO TRANSACTION ON ERROR UNDO, LEAVE LOCKED_RECORDS:
/*Setup : Create record not committed yet*/
CREATE tablename.
ASSIGN tablename.fields = fieldsvalue.
/*ACT : Code I'm trying to test*/
/*...some code...*/
v_isCommitted = hl:FIND-BY-ROWID(ROWID(tablename), EXCLUSIVE-LOCK, NO-WAIT)
AND AVAILABLE(bufl)
AND NOT LOCKED(bufl).
/*...some code touching the record if it is commited...*/
/*ASSERT : program left new record tablename AS …Run Code Online (Sandbox Code Playgroud) 我正在使用 DBeaver 连接到支持 SQL 函数的 Open-Edge 11 数据库。这里使用的功能不起作用。这是一个示例和结果:
功能:
SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS where TABLE_NAME = 'TxMSAGrading'
Run Code Online (Sandbox Code Playgroud)
错误:
SQL Error [42S02]: [DataDirect][OpenEdge JDBC Driver][OpenEdge] Table/view/synonynm "INFORMATION_SCHEMA.COLUMNS" cannot be found. (15814)
Run Code Online (Sandbox Code Playgroud)
如何获取列名?