达梦数据库中集合类型的使用(上)
达梦数据库中集合类型的使用(上)
在DM PL/SQL的使用过程中,如果我们想储存单个的数据,我们可以利用声明变量的方式来存储,如果我们想存储单行多列的数据,我们可以用到记录类型(record),如果我们想保存单列多行的数据,则可以利用集合类型的方式来存储。
本文就将给大家介绍达梦数据库中常用的几种集合类型以及他们的特点。
一.索引表
索引表的特点:
1.可以使用数字或者字母作为下标
2.以数字做下标时可以使用负数
3.只能在PL/SQL块中使用,无法作为表字段
下面进行一些测试,首先是数字做下标的索引表
declare
type index_tab_type is table of varchar(30)index by int;
v_table index_tab_type;
begin
v_table(-1):='hello';--设定下标为-1的元素的值
v_table(1):='and ';--设定下标为1的元素的值
v_table(5):='world';
print('元素个数为:'||v_table.count);
print('第一个元素是'||v_table(v_table.first));--输出第一个元素
print('最后一个元素是'||v_table(v_st));--输出最后一个元素
end;
执行结果如下
然后是字母做下标的索引表
declare
type index_tab_type is table of varchar(30)index by varchar(1);
v_table index_tab_type;
begin
v_table('a'):='hello';--设定下标为-1的元素的值
v_table('c'):='world';
print('元素个数:'||v_table.count);
print('第一个元素'||v_table(v_table.first));
print('最后一个元素'||v_table(v_st));
end;
输出结果
可以看到,当采用字符做下标的时候,索引表的存储类似与键值(key-value)的存储方式
二.Varray(变长数组)
Varray的特点
1.声明的时候需要声明最大容量。
2.首次使用时需要初始化。
3.初始化时实际大小为0,需要利用extend方法来扩张上限才能增加元素。
这里我们换一种方式,把示例库DMHR中employee表上ID为1001至1005的5个人的名字存入此varray内,测试如下
DECLARE
TYPE MY_ARRAY_TYPE IS VARRAY(10)OF VARCHAR(100); --声明一个最大容量为100的varray
v MY_ARRAY_TYPE;
BEGIN
v:=MY_ARRAY_TYPE(); --初始化varray
FOR I IN1..5LOOP
v.EXTEND();--扩张上限
SELECT employee_name INTO v(I)FROM dmhr.employee WHERE employee_id=1000+i;
END LOOP;
PRINT'v.COUNT()='||v.COUNT();
FOR I IN1..v.COUNT()LOOP
PRINT'v('||i||')='||v(i);
END LOOP;
END;
输出结果
需要注意的是,varray在使用时一定要利用extend来扩张上限,不然会有收集下标越界的报错
因为篇幅原因,本期的内容就到这里了,在下一期的分享中,我们会继续向大家介绍嵌套表以及数组类型的使用,敬请期待。
20190322达梦数据库中集合类型的使用(下)
达梦数据库中集合类型的使用(下)在上周的分享中,我们介绍了集合类型中的变长数组和索引表,今天我们讲一讲剩下的几种跟集合有关的数据类型。
三.嵌套表嵌套表和varray类型用法类似,主要区别在于嵌套表在使用时不用指定元素上限。
这里我们采用结合游标制造一个比较复杂的例子,我们先采用一个游标ename_cursor来存储job_id为21的员工姓名信息,然后通过遍历游标把对应的员工姓名存储到嵌套表中,相关代码如下:DECLARE--下面这句是嵌套表的声明,可以看到这里并不用指定元素上限TYPE ename_array_type is table ofdmhr.employee.employee_name%TYPE;--定义一个游标CURSOR ename_cursor is select employee_name from dmhr.employee where job_id=21;--初始化嵌套表,此时嵌套表为空ename_array ename_array_type:=ename_array_type(); --初始化嵌套表i number:=0;BEGINfor ename in ename_cursorloopi:=i+1;--执行extend函数,为数组增加一个null元素ename_array.EXTEND;ename_array(i):=ename.employee_name; print(ename.employee_name);end loop;--注意嵌套表下标是从1开始的,而不是0 for j in1..ename_array.count()loopprint(ename_array(j));end loop;END;/执行结果如下,篇幅关系并没有截全。
四.数组类型前文所述的三种集合类型用法跟oracle较类似,除此之外,在DM PL/SQL中,我们也可以使用直接声明的方式来使用数组类型,也就是array类型。
达梦数据库使用
达梦数据库使⽤1、修改最⼤连接数先查看当前的最⼤连接数:select SF_GET_PARA_VALUE(2, 'MAX_SESSIONS');修改最⼤连接数:ALTER SYSTEM SET 'MAX_SESSIONS' =1000 spfile;重启数据库:su - dmdba; cd dmdbms;./DmServiceDmServiceDMERVER stop;./DmServiceDmServiceDMERVER start (需要⾸先切换到dmdba⽤户,进⼊bin⽬录再执⾏重启命令)2、查看数据当前连接数:su - dmdba; cd dmdbms; ./disql 然后输⼊⽤户名密码select * from v$sessions where state='ACTIVE';select count(*) from v$sessions;select SESSID,state,clnt_ip from v$sessions where state='ACTIVE';-- 关闭连接sp_close_session(1346445624);select count(*) from V$CONNECT;SELECT * FROM V$CONNECT;select * from v$sessions where state='ACTIVE';select SF_GET_PARA_VALUE(2, 'MAX_SESSIONS');SELECT A.SESS_ID AS 会话id,A.SQL_TEXT AS SQL语句,A.STATE AS 会话状态,A.N_USED_STMT AS 当前会话使⽤句柄数量,A.CURR_SCH AS 当前模式,ER_NAME AS ⽤户名,A.TRX_ID AS 事务ID,A.CREATE_TIME AS 会话创建时间,A.CLNT_TYPE AS 客户端类型,A.TIME_ZONE AS 时区,A.OSNAME AS 操作系统名称,A.CONN_TYPE AS 连接类型,B.PROTOCOL_TYPE AS 协议类型,B.IP_ADDR AS 访问ip地址FROM V$SESSIONS A, V$CONNECT Bwhere A.Sess_id= B.SADDRORDER BY SF_GET_EP_SEQNO(A.rowid),A.Sess_id;-- 关闭IDLE连接sp_close_session(1346445624); -- 参数为会话ID。
达梦DMETL_Develop操作手册
达梦数据交换平台开发手册达梦数据库有限公司2013年3月目录第1章开发流程插件 (1)1.1 概述 (1)1.2 导入依赖的插件工程 (1)1.3 开发作业插件 (5)1.3.1 概述 (5)1.3.2 步骤 (5)1.4 开发转换插件 (14)1.4.1 概述 (14)1.4.2 步骤 (14)1.5开发规则插件 (24)1.5.1 概述 (24)1.5.2 步骤 (24)第2章使用API编程 (36)2.1 概述 (36)2.2 编程示例 (38)2.2.1编程示例之一 (38)2.2.3 编程示例之二 (42)2.2.4 编程示例之三 (44)2.2.5 编程示例之四 (46)2.2.5 总结 (47)2.3 示例程序及其实现的功能列表 (47)2.4 常见问题 (49)2.4.1 Spring 包冲突问题 (49)第3章集成DMETL服务 (50)第1章开发流程插件1.1 概述DMETL采用基于OSGI架构,系统的各个模块如流程节点、转换规则、数据质量检查规则都支持插件机制,可以根据具体业务需求动态扩展。
本章将通过各种例子说明DMETL的插件的开发方法。
本章中的各种例子都采用JDK6+Eclipse3.6开发,用户界面都采用SWT / JFace 库开发,学习本章前最好先了解Eclipse插件开发的基本概念和方法。
1.2 导入依赖的插件工程开发DMETL插件之前需要先导入已有的DMETL 插件到workspace中,导入DMETL插件的方法如下:首先在eclipse中选择File->Import,如下图所示:选择Plug-ins and Fragments, 单击Next,出现下面的对话框再选择Directory路径选择DMETL的安装目录,图中的C:\dmetl\client表示DMETL安装在C盘的根目录下,选择client端的包时,目录选择C:\dmetl\client,选择server端的包时,目录选择C:\dmetl\server,选择Common包时,目录选择C:\dmetl\common,再点击Next,出现如下对话框:选择要所需要依赖的包,然后点击Add-->Finish就可以将包作为插件工程导入到workspace 中。
达梦数据库的date类型
达梦数据库的date类型简介在数据库中,日期是一种常见的数据类型,用于存储和操作日期数据。
达梦数据库(DMDB)也提供了一种称为date的数据类型,用于存储日期信息。
本文将详细介绍达梦数据库中date类型的特点、使用方法以及相关的注意事项。
date类型特点•date类型用于表示年份、月份和日期,不包含具体的时间信息。
•date类型占用3个字节的存储空间。
•date类型支持范围从公元前4712年到公元9999年。
•date类型支持标准日期格式(YYYY-MM-DD)。
创建date类型字段在创建表时,可以使用date关键字指定一个字段为date类型。
例如:CREATE TABLE my_table (id INT,my_date DATE);上述代码创建了一个名为my_table的表,并在其中定义了一个名为my_date的字段,该字段被指定为date类型。
插入和查询date类型数据要插入一个date类型的值,可以使用标准日期格式进行插入。
例如:INSERT INTO my_table (id, my_date) VALUES (1, '2022-01-01');上述代码向my_table表中插入了一条记录,其中id为1,my_date为2022年1月1日。
要查询date类型的数据,可以使用标准SQL语句。
例如:SELECT * FROM my_table WHERE my_date = '2022-01-01';上述代码将查询my_table表中my_date字段为2022年1月1日的记录。
date类型的函数和操作达梦数据库提供了一些函数和操作符,用于处理date类型的数据。
DATE_ADD函数DATE_ADD函数用于对date类型的值进行加法运算。
例如:SELECT DATE_ADD('2022-01-01', INTERVAL 1 DAY);上述代码将返回2022年1月2日,即在指定日期上加1天。
达梦数据库基本操作
达梦数据库基本操作一、创建数据库在达梦数据库中,可以使用CREATEDATABASE语句来创建数据库。
语法如下:CREATE DATABASE database_name;例如,要创建一个名为"testdb"的数据库,可以执行以下命令:CREATE DATABASE testdb;二、创建表在达梦数据库中,可以使用CREATETABLE语句来创建表。
语法如下:CREATE TABLE table_namecolumn1 data_type,column2 data_type,...columnn data_type例如,要创建一个名为"students"的表,其中包含"id"、"name"和"age"三个列,可以执行以下命令:CREATE TABLE studentsid INT,name VARCHAR(50),age INT三、插入数据在达梦数据库中,可以使用INSERTINTO语句来插入数据。
语法如下:INSERT INTO table_name (column1, column2, ..., columnn)VALUES (value1, value2, ..., valuen);例如,要向"students"表中插入一条学生记录,可以执行以下命令:INSERT INTO students(id, name, age)VALUES (1, 'John', 18);四、查询数据在达梦数据库中,可以使用SELECT语句来查询数据。
语法如下:SELECT column1, column2, ..., columnnFROM table_nameWHERE condition;例如,要查询"students"表中所有学生的姓名和年龄,可以执行以下命令:SELECT name, ageFROM students;五、更新数据在达梦数据库中,可以使用UPDATE语句来更新数据。
达梦数据库使用手册
达梦数据库使用手册达梦数据库(DmDB)是由达梦软件发布的高性能关系型数据库管理系统,也是我国自主研发的国产数据库产品,结合了关系数据库和对象数据库的特点,使用简便、开发效率高、运行性能优越,是一款非常好的数据库产品。
达梦数据库拥有强大的多核处理技术,高性能查询和索引机制,多层安全保护,高容错性等特点,支持多种语言编程,具有极高的处理能力。
1. 安装操作达梦数据库的安装可在多种操作系统上进行,操作系统要求遵循最新的“Server + OS + Database”的最佳实践。
在安装之前,首先利用安装前准备工具对软件进行校验,以确保正确安装达梦数据库。
需要特别指出的是,达梦数据库的安装需要用到“DmNet”网络服务器软件,该软件是达梦数据库的核心服务软件,用于实现达梦数据库的系统参数管理、客户端连接管理等操作。
2. 数据库建立达梦数据库的建立是依靠已安装的DmNet管理工具或SQL脚本进行的,可以从操作系统界面使用DmNet管理工具创建新的数据库,或者使用SQL脚本来创建数据库。
3. 表的创建达梦数据库支持使用lsql工具,脚本文件或图形界面创建数据表。
可以选择编写SQL 语句,然后使用脚本来批量创建数据表,也可以在DmNet工具中使用图形界面来创建数据表。
4. 数据表的理解数据库理解是指对存储在数据库表中信息的分析和掌握,以便能够准确地获取信息。
在理解查询、以及关系型数据库设计与编程中,数据库理解的重要性不言而喻。
理解准确的数据表结构,对开发数据库应用系统、优化系统性能都有重要的作用。
5. 编程语言达梦数据库提供多种编程语言,如SQL、PL/SQL、PHP、Java等,可以依据自身的需求,选择不同的语言来开发应用程序。
6. 查询技术达梦数据库提供了丰富的查询手段,可以根据查询条件执行Select、Join、Group By、Having、Order By、Inner Join等查询操作。
同时,达梦数据库还支持SQL语句嵌套查询,使查询操作更丰富,更精准。
达梦数据库基本操作
达梦数据库基本操作
达梦数据库是国内自主研发的一款关系型数据库管理系统,在企
业信息化中被广泛应用。
以下是达梦数据库的基本操作:
1. 连接数据库:在达梦客户端中输入数据库地址、端口号、用
户名、密码等信息,然后点击连接按钮即可连接数据库。
2. 创建数据库:在达梦客户端中使用SQL语句创建数据库,例如:CREATE DATABASE db_name;
3. 创建数据表:在达梦客户端中使用SQL语句创建数据表,例如:CREATE TABLE table_name (column1 datatype1, column2 datatype2, ...);
4. 插入数据:使用INSERT语句将数据插入到数据表中,例如:INSERT INTO table_name (column1, column2, ...) VALUES (value1, value2, ...);
5. 删除数据:使用DELETE语句从数据表中删除数据,例如:DELETE FROM table_name WHERE condition;
6. 更新数据:使用UPDATE语句更新数据表中的数据,例如:UPDATE table_name SET column1 = value1 WHERE condition;
7. 查询数据:使用SELECT语句从数据表中查询数据,例如:SELECT column1, column2, ... FROM table_name WHERE condition;
以上是达梦数据库的基本操作,还有其他更高级的操作需要进一
步学习和掌握。
group_concat在达梦用法
group_concat在达梦用法group_concat是一种用于在SQL查询中合并多个行的聚合函数。
在达梦数据库中,也可以使用group_concat函数来进行字符串的连接操作。
group_concat函数的基本语法如下:sqlSELECT group_concat(expression) FROM table[WHERE conditions][GROUP BY column];在该语法中,expression是要连接的列或表达式,table是要查询的表名,conditions是查询条件,column是用于分组的列。
下面是一些在达梦数据库中使用group_concat函数的示例:1. 将多行的某一列的值合并成一个字符串:sqlSELECT group_concat(name) FROM students;上述示例将合并students表中的name列中的所有值,并将结果作为一个字符串返回。
2. 在查询结果中按照某一列进行分组,并将每一组的值合并成一个字符串:sqlSELECT group_concat(name) FROM students GROUP BY grade;上述示例将根据grade列对students表中的数据进行分组,并将每个分组中的name列的值合并成一个字符串返回。
3. 在查询结果中对多个列的值进行连接:sqlSELECT group_concat(name, ', ', age) FROM students;上述示例将合并students表中的name和age列的值,并使用逗号作为分隔符连接这两个列的值。
4. 对连接后的字符串进行排序:sqlSELECT group_concat(name ORDER BY age DESC) FROM students;上述示例将合并students表中的name列的值,并按照age列的降序对连接后的字符串进行排序。
达梦数据库用法
达梦数据库用法介绍如下:
达梦数据库是一种国产关系型数据库管理系统,以下是其基本用法:
1.数据库创建:使用DM SQL语言创建数据库,包括数据库名称、数据表名称、数据
表列名、列属性等。
2.数据库管理:包括数据库备份、还原、升级、监控、优化等。
3.数据库操作:包括数据查询、插入、更新、删除等。
4.数据库权限管理:包括用户管理、权限控制、角色管理等。
5.数据库扩展:包括数据库连接池、分布式数据库等扩展功能。
6.数据库应用开发:使用DM SQL语言进行应用程序开发,包括存储过程、触发器、
视图等。
7.数据库安全:包括数据加密、安全审计等。
8.数据库监控:包括性能监控、日志监控等。
总之,达梦数据库具有完整的数据库管理和应用开发功能,可用于企业级应用系统的开发和管理。
达梦dec数据类型
达梦dec数据类型达梦数据库是一款自主研发的企业级数据库管理系统,它具有许多强大的功能和特点,其中包含了丰富的数据类型。
本文将重点讨论达梦数据库的DEC数据类型,并介绍DEC数据类型的定义、应用场景、使用方法以及相关的注意事项。
一、DEC数据类型的定义DEC是达梦数据库中的一种数字类型,它用于存储精确的小数数据。
DEC类型的定义语法如下:DEC(p,s)其中,p表示总位数,s表示小数位数。
DEC类型可以存储的数字范围为-10^38+1到10^38-1。
二、DEC数据类型的应用场景DEC数据类型适用于需要进行精确计算的场景,如金融业务、科学计算、精确测量、工程设计等领域。
DEC类型可以保证数据的完整性和精确性,避免由于浮点数运算引起的舍入误差。
三、DEC数据类型的使用方法1. 创建DEC类型的列:在创建表时,通过指定列的数据类型为DEC(p,s),来创建一个DEC类型的列。
例如:CREATE TABLE mytable (id INT,amount DEC(12,2));2. 插入DEC类型的数据:在插入数据时,直接将DEC类型的值赋给DEC类型的列。
例如:INSERT INTO mytable (id, amount) VALUES (1, 1234.56);3. 查询DEC类型的数据:查询DEC类型的数据时,可以直接使用DEC 类型的列名。
例如:SELECT amount FROM mytable WHERE id = 1;4. DEC类型的计算:DEC类型可以参与各种算术运算,包括加法、减法、乘法、除法等。
例如:SELECT amount * 2 FROM mytable WHERE id = 1;四、DEC数据类型的注意事项1. DEC类型的精度:DEC类型的总位数p和小数位数s需要根据实际需求进行设置。
p的值最大为38,s的值必须小于等于p。
2. DEC类型的存储空间:DEC类型的存储空间随着总位数p的增加而增加。
