Oracle&&PL/SQL
文章平均质量分 62
Oracle 相关的文章和具体的遇到问题的解决实例。
涛涛之海
学好编程,成为一名高级工程师
展开
-
Oracle hint认识
hint 认识正确的语法是:select /*+ index(x idx_t) */ * from t x where x.object_id=123/*+ */ 和注释很像,比注释多了一个“+”,这就是Hint上面这个hint的意思是让Oracle执行这个SQL时强制走索引。如果hint的语法有错误,Oracle是不会报错,只是把/* */里的内容当做注释而已。不合理使用Hint的危害:由于表中的数据是会变化,一般不能在程序中的sql里用Hint,假如像上面的Hint一样强制走索引。原创 2021-06-27 15:16:55 · 859 阅读 · 0 评论 -
Oracle 触发器
Oracle 触发器触发器的应用场景创建触发器create trigger saynewempafter insert on empdeclare begin dbms_output.put_line("成功插入新员工"); end;语法类型语句级触发器在指定的操作语句操作之前或之后执行一次,不管这条语句影响了多少行。行级触发器触发语句作用的每一条记录都被触发。在行级触发器中使用:old 和 :new 伪记录变量,识别值的状态。应用应用场景1原创 2021-06-27 14:54:53 · 117 阅读 · 0 评论 -
Oracle 高级查询
Oracle 高级查询分组查询分组函数的概念分组函数作用于一组数据,并对一组数据返回一个值。分组函数的使用分组函数会自动忽略空值,可以通过nvl() 去做特殊处理。AVG and SUM// 求出员工的平均工资和工资的总额select avg(sal), sum(sal) from emp;MIN and MAX// 求出员工工资的最大值和最小值select MAX(sal),MIN(sal) from emp;COUNT// 求出员工的总人数select count(*原创 2021-06-27 14:49:49 · 249 阅读 · 0 评论 -
存储过程 和存储函数
存储过程 和存储函数创建存储过程create or replace procedure sayhellowordas--说明部分begindbms_out_put_line("Hello world");end;/调用存储过程exec sayhelloword();begin sayhelloword(); sayhelloword(); end;创建存储函数create or replace function queryempincome(eno in原创 2021-06-27 14:36:23 · 147 阅读 · 1 评论 -
PL/SQL 基本案例
PL/SQL 基本案例案例1问题: 1.统计每年入职的员工人数解题思路:循环遍历员工人数,取出每一个员工的入职日期,符合的,计数器加1代码:set severoutput ondeclare -- 定义光标 cursor cemp is select to_char(hiredate,'yyyy') from emp; phiredate varchar2(4); --每年入职的员工数 count80 number :=0; count81 number :原创 2021-06-20 19:00:23 · 217 阅读 · 1 评论 -
PL/SQL基本语法
1. 面向过程的语言打印hello worddeclare -- 说明部分(变量,光标或者例外) begin --程序体 dbms_output.put_line("Hello Word"); end; / --退出编译环境,并执行这个程序 --打开输出开关 set serveroutput on / --执行 ------输出结果------- Hello World --查原创 2021-06-17 06:54:57 · 261 阅读 · 0 评论 -
Oracle查看一张表数据的大小
示例:select t.segment_name,bytes/1024/1024 as MB from user_segments t where t.segment_name='表名需大写';select t.segment_name,bytes/1024/1024 as MB from dba_segments t where t.segment_name='表名需大写';说明user_segments 只能查看当前用户下的表数据dba_segments 只能查看所有用户下的表数据原创 2021-03-19 08:59:56 · 3841 阅读 · 0 评论 -
[Oracle] 《Oracle查询优化改写技巧与案例2.0》读书笔记
文章目录前言单表查询查找空值NULL 不支持 加、减、乘、除、大小比较、相等比较,否则只能为空;处理空值NVL在 WHERE 子句中 引用取别名的列限制返回的行数给查询结果排序以指定的次序返回查询结果从表中随机返回n条记录TRANSLATE处理排序空值根据条件取不同列中的值来排序参考书籍前言只是记录和整理了一些对我有用的笔记,详细得请看原著。单表查询查找空值select * from emp where comm is nullNULL 不支持 加、减、乘、除、大小比较、相等比较,否则只能为空原创 2020-08-13 20:26:51 · 915 阅读 · 0 评论 -
[Oracle] 自定义数据类型Type
文章目录Oracle 自定义类型的种类一、TYPE type_name IS RECORD 定义记录数据类型二、TYPE table_Typename IS TABLE 定义表记录类型Oracle 自定义类型的种类type定义:oracle中自定义数据类型oracle中有基本的数据类型,如number,varchar2,date,numeric,float…但有时候我们需要特殊的格式,如将name定义为(firstname,lastname)的形式,我们想把这个作为一个表的一列看待,这时候就要我们自原创 2020-08-11 20:05:29 · 1842 阅读 · 0 评论 -
【Oracle】ora-00932:数据类型不一致:应为 -,但却获得BLOB
文章目录问题场景解决思路解决办法拓展问题场景select blob from table1 union select blob from table2出错:ora-00932:数据类型不一致:应为 -,但却获得BLOB解决思路因为我关联的时候,有的数据可以对应上上Clob 字段,有的则为空,但我又想把这些数据都显示出来,一直想的是怎么把字符串转成CLOB 类型,查找了半天,也没有发现一个好办法,好像大家都不经常用转成CLOB类型函数。TO_CLOB()UPDATE PRINT_MEDI原创 2020-08-10 22:03:42 · 15011 阅读 · 1 评论 -
Oracle之 LISTAGG () OVER(PARTITION BY)函数
拼接的字符串没有超过4000字符SELECT department_id AS "Dept.", LISTAGG(last_name, '; ') WITHIN GROUP (ORDER BY hire_date) AS "Employees" FROM employees GROUP BY department_id ORDER BY department_id;SELECT department_id AS "Dept.", LISTAGG(last_nam原创 2020-07-29 21:02:22 · 2235 阅读 · 0 评论 -
oracle插入CLOB类型超过4000个字符报ORA-01704错的解决方法
解决方案,声明一个变量DECLARE v_sql CLOB;BEGINv_sql := RPAD('*', 4000, '*') || RPAD('*', 4000, '*');INSERT INTO TEST(STATUS, BODY) VALUES('complete', v_sql);COMMIT;END;原因因为oracle在插入CLOB的数据默认会以varchar2的类...原创 2020-04-15 23:27:28 · 2786 阅读 · 0 评论 -
Oracle 中如何实现客户号自增
文章目录实现语法序列创建语法Sequence 具体用法1、Create Sequence2、得到Sequence值3、Alter Sequence4、Drop Sequence实现语法update amldata.tmp_out_client t sett.client_id = AMLDATA.SEQ_CLIENT_ID.NEXTVAL;序列创建语法AMLDATA.SEQ_CLI...原创 2020-04-15 23:07:20 · 172 阅读 · 0 评论 -
PL/SQL的数据类型、变量以及常量的认识
文章目录PL/SQL数据类型常见的数值数据类型常见的字符类型布尔数据类型NULL常量两个属性类型%TYPE%rowtypePL/SQL数据类型标量(SCALAR)类型 - 它是没有内部组件的单个值,例如:NUMBER,DATE或BOOLEAN等。大对象(LOB)类型 - 指向与其他数据项(例如:文本,图形图像,视频剪辑和声音波形)分开存储的大对象的指针。复合类型 - 具有可单独访问的内部组...原创 2019-02-20 18:18:32 · 586 阅读 · 0 评论 -
Oracle 临时表总结
https://www.cnblogs.com/kerrycode/p/3285936.html原创 2019-03-02 18:21:33 · 197 阅读 · 0 评论 -
oracle pl/sql创建子程序时 as和is关键字的区别
一直纠结于存储过程的is与as最近在网上查了巨多资料,总结如下:在存储过程(PROCEDURE)和函数(FUNCTION)中没有区别;在视图(VIEW)中只能用AS不能用IS;在游标(CURSOR)中只能用IS不能用AS。从其定义也可以看出没什么区别,要是有估计暂时也很少有人发下:create [or replace] procedure procedure_name[(paramet...转载 2019-03-02 18:51:21 · 461 阅读 · 0 评论 -
【Oracle】正则表达式,Connect by以及dual表的认识
Oracle的Connect By理解 https://www.cnblogs.com/princessd8251/p/4064060.htmloracle REGEXP_SUBSTR函数 https://www.cnblogs.com/yuany69/p/6093017.htmldual 表 https://blog.csdn.net/hunhun1122/article/details...原创 2019-03-09 16:13:10 · 737 阅读 · 0 评论 -
【PL/SQL】动态sql实例
select substr(i_op_flag, 0, 1) into v_step from dual;v_sql := ‘UPDATE amldata.t_sus_comment tSET t.available_type = ‘‘0’’WHERE t.process_id = ‘’’ || i_process_id || ‘’’and t.process_step like ‘’’ ...原创 2019-03-09 17:55:06 · 155 阅读 · 0 评论 -
【Oracle】rownum的认识及实例
文章目录实例业务介绍rownum参考文章实例select b.parent_deptfrom (select a.parent_dept from wolf.wb_dept a where a.branch_no = (select b.branch_no from wolf.wb_user a ...原创 2019-03-09 17:08:37 · 529 阅读 · 0 评论 -
【Oracle】查看一张表中被删除的数据以及恢复数据
可能会遇到快照过旧的问题,我删除数据是在当天下午,查询的是当天上午的数据,在一天之内,解决快照过旧问题select * from core.tb_flow_model as of timestamp to_timestamp('2019-03-14 10:53:22', 'yyyy-mm-dd hh24:mi:ss');alter table core.tb_flow_model enabl...原创 2019-03-14 15:04:09 · 7689 阅读 · 0 评论 -
BLOB 类型的字段如何实现复制
文章目录场景代码场景一张表里有个BLOB 字段,想复制到另外一张表里,直接copy是无法复制的,需要换一种方法实现代码说明 UI_CONTENT 是个BLOB字段update CORE.TB_CUSTOM_UI a set a.ui_content=(select t.ui_content from CORE.tb_custom_ui_0313 t where t.ui_id='1...原创 2019-03-20 21:06:40 · 3570 阅读 · 2 评论 -
【ORACLE】查询最近对一张表的修改记录以及最后一条新增的数据
文章目录查询最近对一张表的修改记录最后一条新增的数据参考文章:查询最近对一张表的修改记录select 表字段,VERSIONS_STARTTIME,VERSIONS_ENDTIME,VERSIONS_OPERATION from 表名 VERSIONS BETWEEN TIMESTAMP MINVALUE AND MAXVALUE WHERE VERSIONS_STARTTIME IS ...原创 2019-03-23 14:30:18 · 8622 阅读 · 0 评论 -
ORA-14450问题解决
文章目录遇到场景原因具体步骤遇到场景原因一张临时表被其他会话占用,不能再对该临时表进行操作。需要kill 所有会话具体步骤select SID,SERIAL# from V$session where SID in (select sid from v$enqueue_lock t where t.type='TO');alter system kill session '21...原创 2019-03-30 16:37:40 · 8112 阅读 · 0 评论 -
对Oracle的权限、角色和用户的认识
权限、角色、用户对权限的认识权限的分类对角色的认识一、何为角色二、系统预定义角色三、管理角色对用户的认识一.创建用户的Profile文件二、创建用户三、修改用户:四、删除用户对权限的认识权限的分类系统权限(针对用户而言)DBA: 拥有全部特权,是系统最高权限,只有DBA才可以创建数据库结构。RESOURCE: 拥有Resource权限的用户只可以创建实体,不可以创建数据库结构。CONN...原创 2019-02-18 17:23:32 · 310 阅读 · 0 评论