半动态查询和数据库安全性

问题描述 投票:0回答:1

我知道具有静态缓冲区,查找,每个等的简单Progress 4GL代码在编译时受到数据库安全性的影响(或者在运行时使用“使用运行时权限检查”选项)。

动态查询仅在运行时受数据库安全性的约束。

有谁知道以下示例中的代码如何表现?

define query q for OrderLine.

DEFINE VARIABLE hQuery AS HANDLE NO-UNDO.

hQuery = QUERY q:HANDLE.

hQuery:QUERY-PREPARE("FOR EACH OrderLine NO-LOCK WHERE OrderLine.Itemnum = 100":U).
hQuery:QUERY-OPEN().

get first q.
do while available OrderLine:

  display OrderLine.Qty.

  get next q.

end.

close query q.
openedge progress-4gl progress-db
1个回答
0
投票

QUERY-PREPARE()和QUERY-OPEN()在运行时执行,编译器无法在编译时评估参数是什么,因此运行时是应用安全性的时间。

(即使您使用静态字符串作为参数,编译器也不够聪明,无法对其进行任何操作。)

© www.soinside.com 2019 - 2024. All rights reserved.