Oracle
文章平均质量分 71
七星程序员
夜空中的七星指引我前进的方向。
展开
-
介绍几个实用的oracle存储过程排查问题测试方法
PL/SQL测试打开存储过程,点击包头右键选择添加调试信息点击方法头,右键打断点,这里就不截图了,直接在所需要打断点的左边行号处,用鼠标双击即可出来断点标识。填写入参,然后点击左上角的按钮开始测试,然后使用旁边几个按钮就行调试。存储过程使用了临时表,如何用PL/SQL进行测试因为临时表是会话级的,只在同一个会话中能看到数据,所以使用了临时表可在调用方法之前,先往该临时表中插入数据进行测试执行了某个方法后,想看下执行成功后所生产的数据。在我们执行方法测试时,如果未提交,只能在原创 2021-03-26 18:03:35 · 3262 阅读 · 2 评论 -
Oracle动态SQL,拆分字符串,并加工拼接为所需SQL
具体场景:在动态SQL中,我们需要把一段字符加工为我们所需要的SQL,这里举个例子,当前台传入字符为 ‘a,b,c,d’ ,需要把该字符加工为 (‘a’,‘b’,‘c’,‘d’) ,作为in语句的条件才能使用。知道了怎么拆分和拼接,就有了思路,其他场景的分割和拼接也就好做了。拆分并加工拼接SQL:--输入 'a,b,c,d'--输出 ('a','b','c','d')FUNCTION splitAndHandleStr( piStr IN varchar2, --需要加工的字符串.原创 2020-09-25 11:46:20 · 919 阅读 · 0 评论 -
Oracle错误:试图创建,变更或删除正在使用的临时表中的索引
当我们要修改或删除临时表时,如果有其他的session使用该临时表,就会报这个错,如果想暴力破解,解决方法如下:根据临时表TMP_ImpGoodsDtl,查询object_idselect object_id from dba_objects where object_name=upper('TMP_ImpGoodsDtl'); 根据object_id查询sidselect * from v$lock where id1=object_id; 根据sid查询serial#se原创 2020-09-01 10:35:35 · 1585 阅读 · 0 评论 -
Oracle数据库保证数据完整的情况下修改字段精度
假设我们要修改order表中的total字段的精度当字段可为空时alter table order modify (total NUMBER(24,4) NOT NULL);当字段可以有默认值时,即给了默认值不会影响业务下面给出线上实际写法,假如该表有千万的数据量,执行此类脚本会耗时较长,用SqlUpgradeLog保证该脚本只执行一次,就算线上执行多长升级,只有第一次会对系统造成影响,提高系统的稳定性declare size Int;Begin size := 0; Se原创 2020-07-08 10:08:35 · 1038 阅读 · 0 评论 -
oracle查询某列值只有一条的数据
1.查询某列值只有一条的数据select t1.* from table1 t1 where t1.所要查询列 in (select t2.所要查询列 from table1 t2 group by t2.所要查询列 having count(1)=1);原创 2020-03-13 18:34:19 · 4130 阅读 · 0 评论 -
Oracle去重函数distinct
distinct用于返回唯一不同的值。表table1:id value 1 a 1 a 2 b 3 b 4 c 5 c 表table2:username password tom s123456 toms 123456 表table3:username phone t...原创 2018-11-07 11:33:26 · 20962 阅读 · 0 评论 -
oracle表解锁
查询出被锁表的信息SQL:select * from v$session a, v$locked_object b where a.sid = b.SESSION_ID; 执行sql查出信息: 主要是使用SID和SERIAL#(下面已标出),你还可以看到操作人和操作电脑等信息。然后执行SQL:参数就是上面标出的SID和SERIAL#alter system kill se...原创 2018-10-18 16:13:51 · 343 阅读 · 0 评论 -
如果指定了 SELECT DISTINCT,那么 ORDER BY 子句中的项就必须出现在选择列表中。(解决方法及原因分析)
解决办法:sqlserver中如果同时用order by和distinct,那order by后面的字段就必须出现在selcet的字段中。这个问题只有在sqlserver中才会有,mysql中是不会有这个问题的。如果这样写会提示错误:select distinct name from user order by id应该这样写:select distinct id,name from us...原创 2018-04-10 11:50:07 · 17671 阅读 · 0 评论 -
Oracle触发器(trigger)的启用和禁用
禁用或启用触发器的状态:有效状态:把触发器设置为ENABLE,当触发事件发生时,处于有效状态的触发器TRIGGER 将被触发。无效状态:把触发器设置为DISABLE,当触发事件发生时,处于无效状态的触发器TRIGGER 将不会被触发,有些业务场景需要关闭触发器,这时就要用到DISABLE了。开启触发器:ALTER TIGGER trigger_name ENABLE ;关闭触发器...原创 2018-09-19 10:18:39 · 12221 阅读 · 1 评论 -
oracle中的||是什么意思?
||在oracle中用于拼接关联字段SQL>select'ABC'||'EFG'fromtab;'ABC'||'EFG'------------ABCEFG另外也可以用concat()函数进行连接selectconcat('A','B')fromtab;...原创 2018-09-19 10:09:58 · 9038 阅读 · 2 评论 -
oracle视图中char转varchar2
create or replace view testview asselect cast('-' as varchar2(20)) code , '未知' name from DUAL;原创 2019-10-14 10:13:37 · 1448 阅读 · 0 评论