2021年7月15日
pl/sql客户端bug 切换的用户的时候,会串掉(意思是显示上切换了,其实并没有)
解决方案:必须重启客户端,切换用户

2021年7月26日
idea git 小姿势,本地库拖回


2021年7月28日
oracle 小知识:不小心删除了一张表数据,怎么办呢?
select * from 表名 as of timestamp sysdate-1/12 //查询两个小时前的删除的某张表
2021年8月22日
并行:多个任务在同一时间点发生,并由不同的cpu进行处理,不互相抢占资源
并发:多个任务在同一时间点内同时发生了,但由同一个cpu进行处理,互相抢占资源
文章推荐:https://www.cnblogs.com/iamqiyue/p/14184769.html
2021年8月30日
jsp 用0做字段状态,列表会出问题,会有默认值
2021年9月07日
easyUI 嵌套对话框问题,对话框A弹出对话框B,A无法关闭。
需要在A的关闭回调 打开B,也就是关闭A不能和打开B 写在一起,必须关闭A
调用A的关闭回调之后再打开B。
2021年9月14日
oracle 11g分组案例:
1、group by user_id,PUNCH_DATE:通过用户id和日期分组
2、listagg( TIME_INTERVAL ,',') within group (order by id) :需要展示的字段(没有纳入分组规则的),order by id 通过 id 排序,或者可以自定义一个排序字段
select d.id,u.User_Id,u.User_Name,d.Punch_Date,d.Punch_Time,de.Dept_Name,d.time,d.remark,d.status,d.TIME_INTERVAL,d.PUNCH_STATUS
from (select
user_id,PUNCH_DATE,
listagg( TIME_INTERVAL ,',') within group (order by id) as TIME_INTERVAL,
listagg( STATUS,',') within group(order by id) as STATUS,
listagg( id ,',') within group(order by id) as id,
listagg( REMARK ,',') within group(order by id) as REMARK,
listagg( PUNCH_TIME ,',') within group(order by id) as PUNCH_TIME,
listagg( PUNCH_STATUS ,',') within group(order by id) as PUNCH_STATUS,
listagg( time ,',') within group(order by id) as time from KQ_PUNCH_DAILY group by user_id,PUNCH_DATE) d inner join tbl_sys_user u on d.User_Id=u.USER_ID inner join tbl_sys_department de on de.dept_id=u.dept_id
2021年9月 23日
一、oracle 11g 存储过程分割字符串案例:纯分割
测试代码(先运行存储过程代码)
SELECT * FROM TABLE( FUNC_ISM_GETSPLITSTR('_FUNC_CTP_LG_GEsss_s_ssssTSPNG_', '_'));
先创建变量
--创建变量
CREATE OR REPLACE TYPE "ARRYTYPE1" IS VARRAY(10000) OF VARCHAR(2000);
存储过程代码
CREATE OR REPLACE
FUNCTION FUNC_ISM_GETSPLITSTR (
in_str IN VARCHAR2, --需分割的字符串
in_split IN VARCHAR2 --分隔符
)
RETURN arrytype1
AS
v_count1 INTEGER;
v_count2 INTEGER;
v_strlist arrytype1;
v_node VARCHAR2 (2000);
BEGIN
v_count2 := 0;
v_strlist := arrytype1 ();
IF (in_str IS NULL) OR (LENGTH (in_str) <= 0)
THEN
RETURN NULL;
END IF;
FOR v_i IN 1 .. LENGTH (in_str)
LOOP
v_count1 := INSTRB (in_str, in_split, 1, v_i);
v_count2 := INSTRB (in_str, in_split, 1, v_i + 1);
v_node := SUBSTRB (in_str, v_count1 + 1, v_count2 - v_count1 - 1);
IF v_node IS NULL
THEN
v_node := '';
END IF;
IF (v_count2 = 0) OR (v_count2 IS NULL)
THEN
EXIT;
ELSE
v_strlist.EXTEND ();
v_strlist (v_i) := v_node;
v_node := '';
END IF;
END LOOP;
RETURN v_strlist;
END FUNC_ISM_GETSPLITSTR;
输出结果

二、oracle 11g 存储过程分割字符串案例:分割+判断
编写语句

CREATE OR REPLACE
FUNCTION FUNC_ISM_GETSPLITSTR2 (-- 最终返回 1 发起部门,2 主办部门,3 协办部门
-- 写法存在一个问题,需要在开始节点和结束节点加上分隔符否则娶不到
-- _FUNC_CTP_LG_GEsss_s_ssssTSPNG_ 类似 这种格式
in_str IN VARCHAR2, --需分割的字符串
in_split IN VARCHAR2 --分隔符
)
RETURN VARCHAR2
AS
v_count1 INTEGER;
v_count2 INTEGER;
v_count3 INTEGER;--计数器
v_node VARCHAR2 (2000);
v_result VARCHAR2 (2000);
v_resulttep VARCHAR2 (2000);
in_strtep VARCHAR2 (2000);
BEGIN
in_strtep := in_split||in_str||in_split;
v_count2 := 0;
v_count3 := 0;
v_result := '1';
v_resulttep :='';
IF (in_strtep IS NULL) OR (LENGTH (in_strtep) <= 0)
THEN
RETURN NULL;
END IF;
FOR v_i IN 1 .. LENGTH (in_strtep)
LOOP
v_count1 := INSTRB (in_strtep, in_split, 1, v_i);
v_count2 := INSTRB (in_strtep, in_split, 1, v_i + 1);
v_node := SUBSTRB (in_strtep, v_count1 + 1, v_count2 - v_count1 - 1);
IF v_node IS NULL
THEN
v_node := '';
elsif (v_node= '2') then v_count3 := v_count3 +1 ;-- 记得对节点判空,写在后头
ELSE v_resulttep := v_resulttep || v_node;
END IF;
IF (v_count2 = 0) OR (v_count2 IS NULL)
THEN
EXIT;
ELSE
v_strlist.EXTEND ();
v_strlist (v_i) := v_node;
v_node := '';
END IF;
END LOOP;
if ((LENGTH (in_str)-1)/2+1 = v_count3) then v_result := '2';END IF;
RETURN v_result;
END FUNC_ISM_GETSPLITSTR2;
结果对比输出:如果有一个 1所有都是1 ,如果 所有为 2 才能全部为2

三、单条SQL 映射输出(需要注意的是:不能是多条结果集,这个只是单条,接受类型为 varchar2 )
CREATE OR REPLACE
FUNCTION "FUNC_ISM_GETSPLITSTR2_TODAY2" (-- 计算加3天后(跳过非同昨日),得到实际的 日期)
-- 写法存在一个问题,需要在开始节点和结束节点加上分隔符否则娶不到
-- _FUNC_CTP_LG_GEsss_s_ssssTSPNG_ 类似 这种格式
in_str IN VARCHAR2 --需要被计算的日期
)
RETURN VARCHAR2
AS
in_result VARCHAR2 (4000);--
in_temp VARCHAR2 (4000);
in_year VARCHAR2 (4000);
in_month VARCHAR2 (4000);
in_day VARCHAR2 (4000);
BEGIN
in_temp := SUBSTR(in_str,1,4);
select ID into in_result from TBL_TASKS_PERSONAL_SIDE WHERE ID='402881e57c968139017c969805df00d9';
RETURN in_temp;
END FUNC_ISM_GETSPLITSTR2_TODAY2;
测试代码:SELECT FUNC_ISM_GETSPLITSTR2_TODAY2('2021-04-22') as aaa FROM TBL_TASKS_PERSONAL_MAIN

ORACLE 存储过程INTO 多个变量
select f1,f2,f3 into v1,v2,v3 from tab1
2021年9月29日
有的时候Java catch 用 e.getStackTrace ( );
不出异常栈信息,
可以使用e.printStackTrace ( );
解决
2021年10月26日
(1)oracle 分页
select * from (
select A.*,ROWNUM RN from (
SELECT * from DEP_TASK_VIEW) A where 1=1 and ROWNUM <=10 ) WHERE RN >= 1
(2)不仅如此 RN还可以当做唯一记录数ID使用,因视图合并出来的数据ID不是唯一的
select * from (
select A.*,ROWNUM RN from (
SELECT * from DEP_TASK_VIEW) A where 1=1 and ROWNUM <=10 ) WHERE RN >= 1
and RN in (2,3,5)
2021年10月29日
日期期限计算节假日的存储过程,套用两个视图
(1)函数
CREATE OR REPLACE
FUNCTION "FUNC_ISM_GETSPLITSTR2_TODAY2" (-- 计算加3天后(跳过非同昨日),得到实际的 日期)才有该跳的第三条记录获取,而不是日期直接+3,筛选出只有工作日
in_str IN VARCHAR2 --需要被计算的日期
)
RETURN VARCHAR2
AS
in_result VARCHAR2 (4000);-- 最终结果
in_temp VARCHAR2 (4000);-- 辅助筛选年
in_temp2 NUMBER;-- 辅助筛选年 +1
in_temp3 VARCHAR2 (4000);-- 辅助筛选月
in_temp33 NUMBER;-- 辅助筛选月 --处理精度
in_temp4 VARCHAR2 (4000);-- 辅助筛选日
in_temp44 NUMBER;-- 辅助筛选日 --处理精度
in_year VARCHAR2 (4000);--计算的年
in_month VARCHAR2 (4000);--计算的月
in_day VARCHAR2 (4000);--计算的日
in_rn1 VARCHAR2 (4000);--先找到词条日历的rownum,然后加3的记录数就是
in_rn12 VARCHAR2 (4000);-- 词条二(最终的),配合视图二
in_rn122 NUMBER;
in_time VARCHAR2 (4000);-- 后缀的时间
BEGIN
in_temp := SUBSTR(in_str,1,4);
in_temp2 := "TO_NUMBER"(in_temp)+1;
in_temp3 := SUBSTR(in_str,6,2);
in_temp33 := "TO_NUMBER"(in_temp3);
in_temp4 := SUBSTR(in_str,9,2);
in_temp44 := "TO_NUMBER"(in_temp4);
in_time := SUBSTR(in_str,11,99);
SELECT RNN into in_rn1 from TASK_TEMP_DAY1 WHERE CALYEAR = in_temp AND
CALENDAR_MONTH = in_temp33 AND CALENDAR_DAY = in_temp44;
SELECT RNN2 into in_rn12 from TASK_TEMP_DAY2 WHERE RNN = in_rn1;
in_rn122 := "TO_NUMBER"(in_rn12)+3;
SELECT CALYEAR,CALENDAR_MONTH,CALENDAR_DAY into in_year,in_month,in_day from TASK_TEMP_DAY2 WHERE RNN2 = in_rn122;
in_result := in_year||'-';
IF(in_month<10) THEN in_result := in_result || '0'||in_month||'-';
ELSE in_result := in_result ||in_month||'-';
END IF;
IF(in_day<10) THEN in_result := in_result || '0'||in_day;
ELSE in_result := in_result ||in_day;
END IF;
in_result := in_result ||in_time;
RETURN in_result;
END FUNC_ISM_GETSPLITSTR2_TODAY2;
(2)TASK_TEMP_DAY1
SELECT
ROWNUM RNN,
"CALYEAR",
"ID",
"CALENDAR_ID",
"CALENDAR_MONTH",
"CALENDAR_DAY",
"CALENDAR_DATE_TYPE",
"CALENDAR_MODIFY_PERSON",
"CALENDAR_MODIFY_TIME",
"BLANK0",
"BLANK1"
FROM
(
SELECT
DE.*, CA.CALENDAR_YEAR CALYEAR
FROM
KQ_CALENDAR CA
INNER JOIN KQ_CALENDAR_DETAIL DE ON CA.CALENDAR_ID = DE.CALENDAR_ID
WHERE
1 = 1
AND CA.CALENDAR_CREATOR = '4028811d7057520301705756b3ca0050'
ORDER BY
CA.CALENDAR_YEAR ASC,
DE.CALENDAR_MONTH ASC,
DE.CALENDAR_DAY ASC
) -- 工作任务逾期计算节假日配合函数的视图(被查询的视图)
(3)TASK_TEMP_DAY2
SELECT
ROWNUM RNN2,
"RNN",
"CALYEAR",
"ID",
"CALENDAR_ID",
"CALENDAR_MONTH",
"CALENDAR_DAY",
"CALENDAR_DATE_TYPE",
"CALENDAR_MODIFY_PERSON",
"CALENDAR_MODIFY_TIME",
"BLANK0",
"BLANK1"
FROM
TASK_TEMP_DAY1
WHERE
CALENDAR_DATE_TYPE = '0' -- 工作任务逾期计算节假日配合函数的视图(被计算的视图)
2021年11月4日
oracle 11g 写存储过程报错:ORA-00972 identifier is too long
原因存储过程的命名过长,改短即可。
2021年11月5日
oracle 11g 写存储过程 拼接单引号转义问题:
in_str := '1'; -- 输出 1
in_str := '''1'''; -- 输出 '1'
2021年11月5日
oracle 11g 写存储过程 SQL字符串 运行后赋值:
v_idsaaa := SUBSTR(v_idsaaa,1,"LENGTH"(v_idsaaa)-1);
in_timesiov := 'SELECT createTe_ from (SELECT
listagg (createTe_, '','') WITHIN GROUP (ORDER BY ID_) AS createTe_
from (
select TO_CHAR (
create_,
''yyyy-mm-dd hh24:mi:ss''
) createTe_ ,COMMITUSERID_,BUSINESSID_,NAME_,ID_
from jbpm_taskinstance WHERE BUSINESSID_=''402881f47ce4b52d017ce4bc73d30026'' and NAME_ =''进程1''
and COMMITUSERID_ in ('||v_idsaaa||')) GROUP BY BUSINESSID_,NAME_)' ;
execute immediate in_timesiov into v_flag;
-- execute immediate 用于执行 SQL语句
-- in_timesiov 是拼接出来的SQL语句
-- v_flag 接收语句返回的数据
2021年11月15日
记录一个 echarts 柱形图的坑
(1)渲染key的时候如果是整个数组过来,就会变成一坨
xAxis: {
//data: ["一般","好","非常好"]
data: dataKeyList
},

(2)所以要使用遍历出来
xAxis: {
data: ["一般","好","非常好"]
},
2021年11月30日
SQL 自定义排序
select * from tbl_duty_user decode(u.postType,'1',4,'2',3,'3',2,'4',1) asc
oracle 字段已逗号隔开分解为多条数据
https://blog.csdn.net/sofeien/article/details/80534557
No row with the given identifier exists: [com.jh.jcs.business.duty.model.TblDutyDetail#402881e57c7df2e5017c7df8d7c20138]
HQL多對一脏数据问题
2021年12月13日
关于SQL 搜索时间日期范围不可用 or
String hql2 = "from KqPunchDaily where punchDate like '%" + DailyUtil.sameMonth ( )+ "%' or punchDate like '%" + DailyUtil.lastMonth ( )+ "%' and punchStatus !=0 and userId in ("+idstemp+") ";
以上3w数据
要用 beginTime ,或者 >, <锁定范围时间
String hql1 = "from KqLeaveForm where beginTime BETWEEN '" + DailyUtil.sameMonth ( ) + "' and '" + DailyUtil.lastMonth ( ) + "' and status ='1' and deptId = '"+deptId+"' ";
2021年12月17日
pl/SQL客户端乱码
https://blog.csdn.net/gm371200587/article/details/81381825
2021年12月17日
oracle合并表函数
Union:对两个结果集进行并集操作,不包括重复行,同时进行默认规则的排序;
Union All:对两个结果集进行并集操作,包括重复行,不进行排序;
Intersect:对两个结果集进行交集操作,不包括重复行,同时进行默认规则的排序;
Minus:对两个结果集进行差操作,不包括重复行,同时进行默认规则的排序。
2021年12月20日
定制排序:表,学生根据性别排序,如果是男的根据年龄升序,如果是女的根据体重desc,男的排在女的前面
order by 性别,case when 性别=男 then 年龄 end,case when 性别=女 then 体重 end desc
网友评论