美文网首页
随性记录一小点 2021-07-15至未来

随性记录一小点 2021-07-15至未来

作者: 鄙人_阿K | 来源:发表于2021-07-15 10:22 被阅读0次
2021年7月15日

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


image.png
2021年7月26日

idea git 小姿势,本地库拖回


image.png
image.png
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;

输出结果


image.png

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


image.png
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


image.png

三、单条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

image.png
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
},
image.png

(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

参考博客

https://www.cnblogs.com/sunice/p/10436725.html

相关文章

  • 随性记录一小点 2021-07-15至未来

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

  • 随性记录

    从记事开始,我就懂得了忍让、体谅与理解,妈妈从小跟我说,你是姐姐,要让着弟弟;听话点,爸爸妈妈不容易,养你们两姐...

  • 随性记录

  • 20170508 随性记录009

    1)网络孙杰:“有人说,“命”字乃“人一叩”,就是说只要你低得下头,放得下身段,就能够改变你的命运。” 这句话的观...

  • 20170421 随性记录007

    1)刘润---概率偏见:我们的直觉和客观概率常常是不相符的。行为经济学家把人类自以为的概率,称之为:心理概率。心理...

  • 20170817 随性记录026

    教育 1:父母才是孩子的起跑线,让孩子不输在起跑线上的最简单方法就是:在“起跑线”自己先往前迈几步。 2:人类生下...

  • 20170915 随性记录028

    心灵: 1:每个人都有自己的目标、计划、任务、优先级,甚至自己的困惑。如果别人正好有空帮到你,你可以选择感激。但如...

  • 20170618 随性记录018

    1)今天是父亲节,早上和女儿同老爸进行了微信视频聊聊家常,下午去岳父家里家庭聚餐。 其实平时都是忙忙碌碌的,...

  • 20170424 随性记录008

    摘录了这几天看到的一些东西 ,它们曾像打入平静水面的一颗颗小石头,触动了我的内心。(没写相关联的反思,需要复习,明...

  • 20170630 随性记录022

    1)曼德拉说,他年轻时脾气很差,容易暴躁,而牢狱生活的磨炼,使他学会控制情绪,学会处理痛苦,也学会宽容。他说到出狱...

网友评论

      本文标题:随性记录一小点 2021-07-15至未来

      本文链接:https://www.haomeiwen.com/subject/iaeppltx.html