我知道带有静态缓冲区的普通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.
答案 0 :(得分:0)
QUERY-PREPARE()和QUERY-OPEN()在运行时执行,编译器无法评估编译时参数的含义,因此运行时就是应用安全性的时候。
(即使您为参数使用了静态字符串,编译器也不足以执行任何操作。)