度量快速开发平台-专业、快速的软件定制快开平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 部件 流程 SQL
查看: 2716|回复: 4
打印 上一主题 下一主题

[分享] 通过复杂的代码形成业务数据并显示的思路 游标 存储过程

[复制链接]

198

主题

1313

帖子

3784

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3784
跳转到指定楼层
楼主
发表于 2020-3-12 16:31:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
一般我们在度量快速开发平台中,显示一系列数据,可以通过建立业务表,然后在窗体的网格部件上显示。我们日常基本都是这样来做。
如果有比较复杂的业务显示数据,比如要根据不同的条件,查询出不同表中的数据,然后组合成一整块数据想显示在网格部件上。
也就是说,如果无法直接写业务表来实现复杂查询的业务,我们如何来实现呢。


针对这类业务,度量快速开发平台中一般有两种思路才实现。
1、通过平台脚本实现动态的SQL,并通过网格的刷新DataTable实现
      示例:
      在窗体的加载事件中:
      dim sql=""
    if  下拉选项1.Value="部门" then
         sql="select dept_id,dept_name from sa_dept_dict"
     else if  下拉选项1.Value="人员" then
         sql="select id,user_name from sa_staff_info"   
     else
         sql="select id,user_name from "+其他表.Value   
     end if
     网格部件1.DataTable=ExecuteSelect(sql)
     网格部件1.RefreshDataByDataTable()

2、通过数据库存储过程返回游标方式实现
      下面展示一个在oracle存储过程中写复杂的代码形成SQL语句,然后查询出结果集显示到网格部件中。

create or replace procedure GET_RETCURSOR_PRO
        (IN_TABLENAME  in VARCHAR2,
       RET_CURSOR     out SYS_REFCURSOR)
as
p_sql          varchar2(4000);
begin  
   p_sql:='select * from '||IN_TABLENAME;

  open RET_CURSOR for p_sql;
end GET_RETCURSOR_PRO;

在加载事件中:
dim sp=CreateProcedure("default","GET_RETCURSOR_PRO")
'AddInputParam("参数名称",参数枚举,参数值) 添加存储过程输入参数
'参数枚举:数字(13),日期(6),字符(22)
sp.AddInputParam("IN_TABLENAME  ",22,"SA_DEPT_DICT")
'AddOutputParam("参数名称",参数枚举,内容长度) 添加存储过程输出参数
'参数枚举:数字(13),日期(6),字符(22),游标(5)
sp.AddOutputParam("RET_CURSOR",5,0)

'Execute 执行存储过程,传入参数指示是否提交事务(True表示提交事务,)
sp.Execute(false)
'GetOutPraramValue 获取存储过程输出参数的值
dim dt=sp.GetOutPraramValue("RET_CURSOR")

网格部件1.DataTable = dt
网格部件1.RefreshDataByDataTable()



SQLserver的存储过程作为业务表使用方法:
只读业务表的另类写法(业务表数据由存储过程来)
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

198

主题

1313

帖子

3784

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3784
沙发
 楼主| 发表于 2020-3-12 16:32:20 | 只看该作者
这种实现比较好。
回复 支持 反对

使用道具 举报

198

主题

1313

帖子

3784

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3784
板凳
 楼主| 发表于 2020-3-12 16:33:18 | 只看该作者
特别是整合其他系统的情况,非常好用。比如另外系统中写了大量存储过程,那在度量快速开发平台中整合的话,就可以直接调用现有的存储过程,返回数据集并处理。
回复 支持 反对

使用道具 举报

348

主题

3572

帖子

9333

积分

论坛元老

Rank: 8Rank: 8

积分
9333
地板
发表于 2020-3-12 17:50:13 | 只看该作者
直接调用能提高性能和易用性,( ^_^ )不错嘛
若現在就覺得失望無力,未來那麽遠妳該怎麽扛...
————————————————————————致自己
回复 支持 反对

使用道具 举报

348

主题

3572

帖子

9333

积分

论坛元老

Rank: 8Rank: 8

积分
9333
5#
发表于 2020-6-7 11:04:20 | 只看该作者
我试了哈,确实不错
若現在就覺得失望無力,未來那麽遠妳該怎麽扛...
————————————————————————致自己
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|重庆度量科技  本站关键词:快速开发平台

GMT+8, 2024-11-27 10:57 , Processed in 0.187972 second(s), 29 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表