WebADI - 参数的使用

* 本文仅供交流分享,不作为专业指导

最近研究了一下WEBADI文档下载的参数,由于网上这块资料较少,所以专意分享下我的笔记。

  • 准备

集成器:BHSC_EMP_ADI

表值集:BHSC_DEPT_LOV(值:dname,标识:deptno)

供下载内容的视图:BHSC_EMP_V

  • 参数的创建过程

路径:桌面集成管理器/定义参数

1、如图选择应用,要和集成器保持一致

WebADI - 参数的使用_第1张图片

2、在这个页面,点击放大镜的话是查找已有的参数列表,带出信息以修改的,我们这一步骤是新建参数列表,故直接填写信息即可

WebADI - 参数的使用_第2张图片

在定义集成器的上传模板时,系统实际上也会创建一个对应的参数列表,代码一般为XXX_UPL,所以下载的参数列表建议保持一致,命名为XXX_DPL,本例取名为BHSC_EMP_ADI_DPL

WebADI - 参数的使用_第3张图片

3、保存后可在下面增加参数(点绿色加号),这个参数又分为两层结构Parameter和Definition,Parameter是参数列表的元素,但它相当于是一个壳子,它并不定义比如值列表、显示格式等信息,这些具体的信息是在Definition里定义。可以理解为Definition是实际的参数,但它是独立的,也是可供共享的,最终它将使用在哪个WEBADI的下载页面,这要看谁的参数列表里引用了它。

WebADI - 参数的使用_第4张图片

至于创建两者的顺序,孰先孰后都是可以的,本例先创建Definition

4、系统为集成器加载模板创建的Definition一般名为XXX_UPL1/2/3,所以我们也可照顾这个传统取名为“参数列表名1/2/3”,本例取名BHSC_EMP_ADI_DPL1

WebADI - 参数的使用_第5张图片

Source填写WEBADI:Download,Category选择Data,这俩不知道都是干啥的

Data Type根据实际情况选择

Default Required -- 是否必需

Default Visible -- 是否显示

Default User Modifiable -- 是否允许用户更改

Validation Type可以选择快速代码、值集等,本例选择值集,相应的Validation Value就填写值集名

Maximum Size和Display Size受值集限制,不能超过其最大长度

Display Type有List Box、Check Box、Text Field等选项,根据实际情况酌选,本例选择下拉列表

Prompt Left/Above是参数显示在页面的标题

点击保存,将转回到定义Parameter界面

5、点击放大镜,将上一步创建的Definition信息带出来,这里的Name可改可不改,这个Name将在后面SQL中使用,本例稍作调整,以明示Parameter和Definition的不同

WebADI - 参数的使用_第6张图片

6、自动返回到参数列表界面,点击保存,便创建好了一个参数,如果还想要更多参数,再点击绿色加号继续创建即可。

  • WebADI使用参数

路径:桌面集成管理器/管理集成器

更新WEBADI,到第三步骤“内容”-->创建内容(SQL查询)

WebADI - 参数的使用_第7张图片

本例SQL语句为

SELECT t.empno,
       t.ename,
       t.job,
       t.mgr,
       t.hiredate,
       t.sal,
       t.comm,
       t.deptno,
       t.row_id,
       t.mgr_name,
       t.dname,
       t.hiredate_str
  FROM bhsc_emp_v t
 WHERE t.deptno = nvl($PARAM$.P_DEPTNO, t.deptno)

其中,$PARAM$.P_DEPTNO就是取参数的值,这里使用参数列表里定义的参数名

接下来选择前面创建的参数列表到内容上,这样内容的参数就设置好了,后面定义映射等常规操作此处不作赘述。

WebADI - 参数的使用_第8张图片

  • 效果展示

WebADI - 参数的使用_第9张图片

WebADI - 参数的使用_第10张图片

  •  非必需参数问题

开发过程中我发现,尽管参数定义为非必需的,但对于值列表的情况,页面上总会默认选择第一个值,且列表中并没有空白选项,也不能删除参数的值,这将导致非必需参数也变成了必需的。

如果在值集的视图里UNION ALL一行空值,那么页面上就可以选择到空选项了,但如果参数为空值又将报错“验证失败”,我猜测系统会用所选的参数值代入到值集中去检查,而空值不能通过等号比较。我想出的解决办法是,加的这行空值,应当具有一个别致的非空标识,例如dname是NULL,但deptno是-9999,这样内容的SQL语句中将不是用NVL处理,而是观察$PARAM$.P_DEPTNO是否为-9999。

这个解决方法只是将计就计,是否能从参数本身的设置上解决,尚不得知,请大家指教。


参考链接: 
WebADI_案例实施06_创建SQL Query Content结合参数选择(案例)icon-default.png?t=N176https://www.cnblogs.com/eastsea/archive/2012/12/06/4793134.html

WebADI_配置设定08_设定参数WebADI Parameters List(案例)icon-default.png?t=N176https://www.cnblogs.com/eastsea/p/4767857.html

你可能感兴趣的:(Oracle学习笔记,oracle)