直接取HANA数据库数据,动态QUERY

"COPY别人的TYPE-POOLS:ADBC.

DATA LV_SQL TYPE STRING.
DATA LV_FROM TYPE STRING.
DATA LV_WHERE TYPE STRING.
DATA LV_WHERE2 TYPE STRING.
DATA LV_WHERE3 TYPE STRING.
DATA : V_ROWS TYPE I.
DATA : LT_META   TYPE ADBC_RS_METADATA_DESCR_TAB,
       LT_COLUMN TYPE ADBC_COLUMN_TAB,
       LS_META   LIKE LINE OF LT_META,
       LS_COLUMN LIKE LINE OF LT_COLUMN.

*Define variables for the connection
DATA: LR_DBCONN     TYPE REF TO CL_SQL_CONNECTION,
      LV_CON        TYPE DBCON_NAME VALUE ‘HDB‘,
      LR_SQL_ENV    TYPE REF TO CL_SQL_STATEMENT,
      LR_SQL_RESULT TYPE REF TO CL_SQL_RESULT_SET,
      LR_SQL_EXC    TYPE REF TO CX_SQL_EXCEPTION,           "#EC NEEDED
      LR_PAR_EXC    TYPE REF TO CX_PARAMETER_INVALID,       "#EC NEEDED
      DREF          TYPE REF TO DATA,
      TAB_REF       TYPE REF TO DATA,
      GT_COMPONENTS TYPE CL_ABAP_STRUCTDESCR=>COMPONENT_TABLE,
      GS_COMPONENTS LIKE LINE OF GT_COMPONENTS.
FIELD-SYMBOLS : <TABLE> TYPE ANY TABLE,
                <STR>   TYPE ANY.

*Get connection
LR_DBCONN = CL_SQL_CONNECTION=>GET_CONNECTION( CON_NAME = LV_CON ).
CREATE OBJECT LR_SQL_ENV
  EXPORTING
    CON_REF = LR_DBCONN.

LV_SQL = ‘SELECT * FROM ZLYTEST01‘.

LR_SQL_RESULT = LR_SQL_ENV->EXECUTE_QUERY( LV_SQL ).
LT_META = LR_SQL_RESULT->GET_METADATA( ).

LOOP AT LT_META INTO LS_META.
  LS_COLUMN = LS_META-COLUMN_NAME.
  APPEND LS_COLUMN TO LT_COLUMN.
  GS_COMPONENTS-NAME = LS_META-COLUMN_NAME.
  GS_COMPONENTS-TYPE ?= CL_ABAP_DATADESCR=>DESCRIBE_BY_DATA( P_DATA = LS_META-DATA_TYPE ).
  APPEND GS_COMPONENTS TO GT_COMPONENTS.
ENDLOOP.

DATA LR_TABLEDESCR TYPE REF TO CL_ABAP_TABLEDESCR.

LR_TABLEDESCR = CL_ABAP_TABLEDESCR=>CREATE(
P_LINE_TYPE  = CL_ABAP_STRUCTDESCR=>CREATE( P_COMPONENTS = GT_COMPONENTS ) ).

CREATE DATA TAB_REF TYPE HANDLE LR_TABLEDESCR.

*  get REFERENCE OF LT_DATA INTO tab_ref.
LR_SQL_RESULT->SET_PARAM_TABLE(
  EXPORTING
    ITAB_REF             =  TAB_REF   " Reference to Output Variable
    CORRESPONDING_FIELDS = LT_COLUMN ).

**Execute the query
LR_SQL_RESULT->NEXT_PACKAGE( ).
V_ROWS = LR_SQL_RESULT->NEXT( ).

ASSIGN TAB_REF->* TO <TABLE>.
时间: 2024-10-19 00:35:57

直接取HANA数据库数据,动态QUERY的相关文章

C#通过ODBC查询HANA数据库数据

创建HANA的ODBC数据库连接. 默认在控制面板-->管理工具-->数据源(ODBC) 提示:如果系统是64位的,要运行 C:\Windows\SysWOW64\odbcad32.exe 中的32位的ODBC进行配置. 配置好ODBC之后,C#项目中使用:OdbcConnection连接 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 /// <summary> /// 根据SQL语句查

Cglib根据数据库表数据动态生成对象

最近有个任务:根据查询SQL直接导出报表 实现关键是,怎么根据sql查询的数据动态生成对象列表,想到Cglib动态代理实现 废话少说,上代码: 定义动态生成Java Bean类: import java.util import net.sf.cglib.beans.{BeanGenerator, BeanMap} /** * 动态Bean生成 * * @author BarryWang create at 2018/6/19 11:54 * @version 0.0.1 */class Dyna

ext combobox动态加载数据库数据

前台: var provinceStore = new Ext.data.Store({ proxy: new Ext.data.HttpProxy({ url: basePath + "/stationManage/station_getProvinceJSON.action" }), reader: new Ext.data.JsonReader( { root: "" }, ["PROVINCEID", "PROVINCENAME

jdbc mysql 取数,突然取不到数据,数据库中有数据

项目用的是jdbc+mysql,局网取数据的时候,数据一切正常,但是传到服务器上以后,曾经是好的 不知道为什么,近期一传就取不到数据,发现android写的也没有问题,至少大体上没有语法问题. 跟踪后发现sql没问题,直接放到mysql中执行有数据. 但是奇了怪了,后来发现了一个就是where 后面没有条件的时候,传入了1=1 然后就取不出来了,我把where 1=1 去掉,或者where 字段='xxxx' 这样就有数据了. 不知道为什么会这样,不过,问题算是解决了.

19 MySQL概念 数据库 数据表 数据类型 增加删除修改查询 WHERE Order By Limit

数据库管理系统DBMS 数据库中相关概念 数据库 数据表 记录 字段 数据 登录和退出MySQL客户端 查询自己的MySQL服务器有几个数据库 二.退出MySQL客户端的命令 修改root用户的密码 在MySQL客户端来修改密码(当前账号的密码) 数据库操作 创建数据库 显示所有数据库 删除数据库 选择数据库 更改数据库默认字符集 数据表操作 显示当前数据库中的所有表 创建数据表 显示表的创建 列的常用属性 修改数据表 删除数据表 显示表结构 MySQL数据类型 整型 浮点型 字符型 文本型 日

各式结构化数据 动态 接入-存储-查询 的处理办法 (第二部分)

各式结构化数据的动态接入存储查询,这一需求相信有很多人都遇到过,随着实现技术路线选择的不同,遇到的问题出入大了,其解决办法也是大相径庭.数据存储在哪儿,是关系型数据库,还是NoSQL数据库,是MySQL还是Oracle,怎么建立索引,建立什么类型的索引,都是大学问.下面,我要把我对这一解决办法的思考总结一下,有成熟的也有不成熟的,希望大家一起共同探讨. 关键词:结构化数据, 动态, 接入, 存储, 查询 首先,我们得定义一下在本文中什么是结构化数据,这里的结构化数据主要是指扁平化的.可以由基础数

smartGWT DataSource数据动态加载

昨天和今天早上,用DataSource从数据库后台动态加载数据,我的业务是这样的: 我有两个SelectItem选择框,第一个选择框里面的数据是单位,第二个选择框中的数据是对应单位的人,因为人可能有重名,所以还需要加载对应的人的其他信息(如身份证等等),来个图: (选择好之后的样子) 第一个选择框中的单位变了,第二的选择框中只加载对应单位的人的数据,但是关键问题出来了,我加载的数据每一次都不会改变,不管第一个选择框的选择的是什么,第二个选择框只能加载一次数据,就是初始化那一次,我尝试了将对应的D

solr 简单搭建 数据库数据同步(待续)

原来在别的公司负责过文档检索模块的维护(意思就是不是俺开发的啦).所以就稍微接触和研究了下文档检索. 文档检索其实是全文检索,是通过一种技术把N多文档进行一定规律的切割归类,然后创建易于搜索的索引式文件,然后搜索具有某些规律的文档时,能够通过快速定位索引,然后根据索引提供的信息精确定位到文档从而实现迅速找到文档.这个文档一般成为条目. 上家公司的时候使用的是Lucene加上Zoie实现的.lucene是apache下的开源项目,不过并不是全文检索的实现,而是一个全文检索的引擎,是一个架构,是其他

简单数据库数据导出工具总结笔记

简单界面: 1. 左边用ListBox控件,添加一个控件变量m_lb,将数据从数据库导出,然后用m_lb.AddString()添加到ListBox中显示. 在OnInitDialog()中加入.CDBBase是封装的mysql类,一开始从数据库导出的汉字显示乱码,因为数据库用的utf-8,而程序这边用的gbk, 后来加了pDBbase->DBexecute("SET NAMES 'GB2312'");显示正确. 获取ListBox中元素个数用m_lb.GetCount(),返回