我正在尝试为一些 PLSQL 函数/过程参数实现智能全向完成。每一个这样的函数都可能被重载,所以在一开始,我提供所有参数,来自所有重载版本。例如,假设我们有这个:
procedure test(param1 varchar2, param2 varchar2); <= overload 1
procedure test(p1 integer, p2 integer); <= overload 2
procedure test(p1 date, p2 date, p3 date); <= overload 3
我输入时提供的列表exec test(|<=cursor here
是:
param1 [o1]
param2 [o1]
p1 [o2]
p2 [o2]
p1 [o3]
p2 [o3]
p3 [o3]
如果用户"p1 [o2]"
从完成弹出菜单中选择,我想记住他的选择,并且对于下一次完成尝试,提供仅使用 [o2] 参数过滤的列表或对其进行不同排序,以便首先显示 [o2] 项目.
问题是我无法弄清楚如何从完成弹出菜单中获取用户选择并接受的项目。有没有一种干净的方法来实现它?有趣的是,我想到了整个用户案例场景,但我什至在开始之前就被卡住了。在不知道用户从列表中选择了什么的情况下,很难实现这种“自学习/自适应”代码完成系统。