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

一般我们在度量快速开发平台中,显示一系列数据,可以通过建立业务表,然后在窗体的网格部件上显示。我们日常基本都是这样来做。
如果有比较复杂的业务显示数据,比如要根据不同的条件,查询出不同表中的数据,然后组合成一整块数据想显示在网格部件上。
也就是说,如果无法直接写业务表来实现复杂查询的业务,我们如何来实现呢。

针对这类业务,度量快速开发平台中一般有两种思路才实现。
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的存储过程作为业务表使用方法:
只读业务表的另类写法(业务表数据由存储过程来)

原文地址:http://bbs.delit.cn/thread-876-1-1.html

转载请注明出处:

撰写人:度量科技http://www.delit.cn

时间: 2024-11-10 11:21:00

通过复杂的代码形成业务数据并显示的思路 游标 存储过程的相关文章

SAP 常用业务数据表设计

表的要求表中使用的字段请尽量参照各模块的SAP字段标准使用习惯:  例:"ZXSLRZX销售组织对应的利润中心"中的销售组织应该使用VKORG.利润中心应该使用PRCTR.根据表的用途,需确定是否属于配置目的.还是业务目的.配置表的建议:需要加入MANDT字段  例: "ZQJQD缺件清单"就没有MANDT字段需提供相应的维护视图:例:如ZCHECK_MM01工厂和利润中心的对应为保证DEV/QAS/PRD系统的一致性,不应该对配置表提供批量维护的功能,而应该走Re

系统测试要考虑业务数据没有完整录入时候是否会有非空判断异常等影响到现有系统的使用

原文链接:http://www.lookdaima.com/WebForms/WebPages/Blanks/Pm/Docs/DocItemDetail.aspx?id=8f508ee6-38db-4715-9f86-4b9057b328a8 场景复原: 1.我有一个网站:http://www.lookdaima.com 2.网站有个表格的栏目,地址:http://www.lookdaima.com/WebForms/WebPages/Blanks/Pm/Docs/DocTableItemInd

Android使用代码消除App数据并重新启动设备

/** * 使用代码消除App数据 * 我们不寻常的清除App数据,中找到相应的App * 然后选择其清除数据.以下给出代码实现. * * 注意事项: * 1 设备须要root * 2 该演示样例中删除的是系统级应用 * 2 注意在命令的末尾须要加上换行\n * 这就相当于我们平时在Dos中输入命令后再换行一样. * 否则命令不会被运行. */ private void cleanData(String packageName){ try { System.out.println("--->

内存分配(堆、栈、BSS、代码段、数据段)

这两天看了马士兵老师的视频.视频中提到了一个万能钥匙.就是了解程序运行中对内存的操作.主要讲了堆.栈.Data.说真的有点晕.看了两遍.也就略懂一二.在这做个小小知道总结 简介 我们程序运行的时候都是放在内存里的.根据静态.成员函数.代码段.对象.等等.放在不同的内存分块里.大概分为5块 1  栈 2  堆 3 BSS段-全局区-(静态区) 4 代码段 5 数据段 栈 存放局部变量.临时变量.声明.返回值.指向堆对象的地址(指针).总之存放一些小的东西.当不需要时候.栈会自动清除.比如一个加法方

如何在流程管理软件中加强业务数据串联

免费版下载地址:http://pan.baidu.com/share/home?uk=2485372310#category/type=0 1.表单排序功能 表单现在可以设置排序序号,以便使它们在办公页面按照设定的顺序排列,如下图: 2.增加短信.邮件发送设置 流程编辑器环节属性里增加了新的手机短信和电子邮件发送设置:可选发送.必须发送.禁止发送: 3.表单隐藏功能 现在可设置在某个环节隐藏掉表单设计器设计的表单: 4.更多的业务流程定制功能 业务信息增加了若干属性: 现在可给环节设置运行状态标

Sharepoint2013搜索学习笔记之设置业务数据内容源(六)

Sharepoint搜索爬网组件支持爬Business Data Connectivity Service 承载的外部数据,关于Business Data Connectivity Service设置外部数据源,详请请参考:如何:在 SharePoint 2013 中为 SQL Server 创建外部内容类型,爬网设置步骤如下: 第一步,进入管理中心,点击管理应用程序,点击search service 应用程序进入到搜索管理配置页面,点击内容源 第二步,点击新建内容源,给内容源命名,在爬网内容类

redis 业务数据的主从设置

redis与mysql的主从很相似,而且比mysql设置主从更加简单: 分析: 1.redis主从复制特点: (1).master可以拥有多个slave (2).多个slave可以连接同一个master外,还可以连接到其他slave (3).主从复制不会阻塞master,在同步数据时,master可以继续处理client请求 (4).提高系统的伸缩性 2.redis主从复制过程: 当配置好slave后,slave与master建立连接,然后发送sync命令.无论是第一次连接还是重新连接,mast

EF CodeFirs 代码迁移、数据迁移

最近悟出来一个道理,在这儿分享给大家:学历代表你的过去,能力代表你的现在,学习代表你的将来. 十年河东十年河西,莫欺少年穷 学无止境,精益求精    标题叫EF CodeFirs 代码迁移.数据迁移. 那么:到底叫代码迁移还是数据迁移?我在网上看了大半天,怎么叫的都有,后来查了MSDN,MSDN上叫代码迁移.在此,我们也称之为代码迁移. 为什么有人将其称为数据迁移呢?可能是因为本节内容和操作数据库有关<增加一张表,删除一张表,增加一个表字段,删除一个表字段,修改一个表字段等>,所以网友称之为数

Java代码实现excel数据导入到Oracle

1.首先需要两个jar包jxl.jar,ojdbc.jar(注意版本,版本不合适会报版本错误)2.代码: Java代码   import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import jxl.Cell; import jxl.Sheet; import jxl.Workbook; import jxl.read.biff.Bi