半动态查询和数据库安全

时间:2019-03-05 11:59:44

标签: openedge progress-4gl progress-db

我知道带有静态缓冲区的普通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.

1 个答案:

答案 0 :(得分:0)

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

(即使您为参数使用了静态字符串,编译器也不足以执行任何操作。)