Oracle
SQL LOADER导入数据
用户授权表与权限回收
行列转置
SQLPLUS导出数据(SPOOL)
存储过程记录执行异常日志
查看对象创建时间
停止正在执行的DBMS_JOB
表死锁查询
查看正在执行的sql语句
数组,自定义类型
查看最后一次DML的时间
递归(CONNECT BY)
时间间隔(1h2m3s)
REGEXP_SUBSTR行变列
TRANSLATE函数
执行动态SQL
LISTAGG和WM_CONCAT函数列合并为行
表统计分析
表空间大小统计
收缩表段(shrink space)
集合类型
LIKE操作转义
分析函数(窗口函数)
高级分组 ROOLUP、CUBE、GROUPING SETS
SYS_CONTEXT()函数
进制转换
创建DBMS_JOB
执行超长的动态DDL语句
查询占用空间前100的数据表
MERGE 语句使用(UPSERT)
随机生成密码
Scheduler job
递归获取组织的全称
执行job和停止job
本站点使用 MrDoc 构建
-
+
首页
集合类型
# 集合类型 ```SQL --关联数组,嵌套表,可变长数组 --1、关联数组,只能在使用的时候定义,不能作为对象保存到数据库 只有一列 --定义 index_type:BINARY_INTEGER,PLS_INTEGER,VARCHAR2 TYPE table_type_name IS TABLE OF datatype [ NOT NULL] INDEX BY index_type; --例子1 declare type index_tab_type is table of varchar2(30) index by BINARY_INTEGER; v_arr index_tab_type; begin v_arr(-1) :='hello';--设定下标为-1的元素的值 v_arr(1) :=','; dbms_output.put_line(v_arr(-1)||'-'||v_arr(1)); dbms_output.put_line('元素个数:'||v_arr.count); v_arr(5) :='world'; dbms_output.put_line('元素个数:'||v_arr.count); dbms_output.put_line('第一个元素'||v_arr.first); dbms_output.put_line('最后一个元素'||v_arr.last); end; --例子2 declare type index_tab_type is table of varchar2(30) index by varchar2(30); v_table index_tab_type; v_record emp%rowtype; begin --emp表中查询3条记录,以name-job的形式存储到索引表中 select * into v_record from emp where emp.empno=7788; v_table(v_record.ename):= v_record.job; select * into v_record from emp where emp.empno=7844; v_table(v_record.ename):= v_record.job; select * into v_record from emp where emp.empno=7900; v_table(v_record.ename):= v_record.job; dbms_output.put_line(v_table.count);--3 dbms_output.put_line(v_table(v_record.ename));--CLERK end; --2、嵌套表 下标从1开始 int类型下标 --定义嵌套表类型 CREATE [OR REPLACE] TYPE type_name AS | IS TABLE OF element_datatype [ NOT NULL ]; TYPE type_name IS TABLE OF element_datatype [ NOT NULL ]; --例子1 declare type nest_table_type is table of emp.ename%type; v_nest_tab nest_table_type; begin v_nest_tab :=nest_table_type('x');--初始化 必须! 语句 type_name(...) select ename into v_nest_tab(1) from emp where empno=7788; dbms_output.put_line(v_nest_tab(1)); end; --例子2 create type nest_tab_type is table of varchar2(30); create table test_nest_tab( id int, vals nest_tab_type --使用 ) nested table vals store as nest_tab;--vals字段用嵌套表存储,表明nest_tab --上面语句执行完之后,在生成TEST_NEST_TAB的同时会生出一个关联表NEST_TAB用来存储关联表的数据 --插入数据 insert into test_nest_tab values(1,nest_tab_type('one','two','three','four')); --查询数据 declare v_id int; v_tab nest_tab_type; begin select * into v_id,v_tab from test_nest_tab where id=1; dbms_output.put_line(v_id); for i in 1..v_tab.count loop dbms_output.put_line(v_tab(i)); end loop; end; ```
vleity
2025年5月17日 17:18
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
PDF文档(打印)
分享
链接
类型
密码
更新密码