发布网友 发布时间:2022-04-08 01:41
共2个回答
懂视网 时间:2022-04-08 06:03
部门326为部门329的父部门,部门2与部门326是同级部门;
账户muyunfei,属于329部门
消息发送给部门2及部门326两个部门(326|2),发送的部门对象之间用“|”分割
查询:muyunfei账户是否属于该部门字符串(329|2)或者该部门字符串的子部门中
1、首先使用start with。。。。。connect by获得账户muyunfei的部门及父部门
2、遍历部门及父部门,在循环体重嵌套循环(该循环拆分以“|”为分隔符的部门号),在嵌套的循环体中判断,两结果是否相同,相同,即人属于当前部门或其子部门,返回1结束循环,否则继续循环
create or replace function check_User_in_dept(to_party_id varchar2, --部门id,多个用|分割 cur_user_id varchar2 --人员id ) return varchar2 as /* 功能:判断当前人是是否属于当前部门中 * 1当前人属于该部门,0不属于 */ party_str varchar2(200); v_length NUMBER := LENGTH(to_party_id); v_start NUMBER := 1; v_index NUMBER; cursor c_1 is select * from wx_party a start with a.party_id = (select b.department from wx_contacts b where b.user_id = cur_user_id) connect by a.party_id = prior a.parent_id; begin /*检索游标数据*/ for v_1 in c_1 loop /**根据‘|’拆分字符串,并匹配数据,如果存在然后1,否则继续循环*/ WHILE (v_start <= v_length) LOOP v_index := INSTR(to_party_id, '|', v_start); -- DBMS_OUTPUT.PUT_LINE('v_index:' || v_index); IF v_index = 0 THEN party_str := SUBSTR(to_party_id, v_start); v_start := v_length + 1; ELSE party_str := SUBSTR(to_party_id, v_start, v_index - v_start); v_start := v_index + 1; END IF; --DBMS_OUTPUT.PUT_LINE('party_str:' || party_str); --DBMS_OUTPUT.PUT_LINE('party_id:' || v_1.party_id); IF party_str = v_1.party_id then return '1'; end if; END LOOP; /*重置循环条件*/ v_length := LENGTH(to_party_id); v_start := 1; end loop; return '0'; end;
版权声明:本文为博主原创文章,未经博主允许不得转载。
oracle查询某人所在的部门(326)是否属于部门字符串(329|2)或者该部门字符串的子部门中
标签:
热心网友 时间:2022-04-08 03:11
摘要Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。数据库设计的三范式:第一范式是指数据库表的每一列都是不可分割的基本数据项。第二范式就是非主属性非部分依赖于主键。第三范式就是属性不依赖于其它非主属性。二、select查询列--查询-- 员工表 部门表 薪资等级表 奖金表--select *|字段名1,字段2,... from 表名;--查询所有的员工信息select * from emp;--查询所有的员工姓名,员工编号,上级经理人编号,部门编号--查询的数据: 员工姓名,员工编号,上级经理人编号,部门编号--数据的来源: emp员工表--条件:select ename, empno, mgr, deptno from emp;--去重 distinctselect distinct deptno from emp;--去重的要求:查询出来的两条数据,要求每一个字段的值都相同,才能达到去重效果select distinct deptno,ename from emp;--取别名--""原样输出 ,别名是小写的,有特殊符号存在,前后必须添加""--给字段取别名 (as) 别名select ename as "username", empno "员工 编号" from emp;--给表取别名: 表名 别名,注意:表取别名不能出现asselect ename 员工名称 from emp e;--伪列 :不存在的字段--表达式select distinct 123*456 乘积 from dept;--字符串用单引号表示 ,原样输出用双引号select empno,ename,123*345,'haha' 哈哈 from emp;--虚表 没有数据,没有字段select 123*456,'hehe' from al;--字符串的拼接 ||--查询员工姓名,结果前拼接SXT-select 'SXT-'||ename "尚学堂员工姓名",comm from emp;--null是空值,和数字运算,结果还是nullselect ename ,comm "原奖金",comm+100 "新奖金" from emp;--null 和 字符咨询记录 · 回答于2021-10-13Oracle查询平均工龄大于35年的部门,内容包括:部门编号,部门名称,部门位置,部门人数,平均工龄,平均工资Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。数据库设计的三范式:第一范式是指数据库表的每一列都是不可分割的基本数据项。第二范式就是非主属性非部分依赖于主键。第三范式就是属性不依赖于其它非主属性。二、select查询列--查询-- 员工表 部门表 薪资等级表 奖金表--select *|字段名1,字段2,... from 表名;--查询所有的员工信息select * from emp;--查询所有的员工姓名,员工编号,上级经理人编号,部门编号--查询的数据: 员工姓名,员工编号,上级经理人编号,部门编号--数据的来源: emp员工表--条件:select ename, empno, mgr, deptno from emp;--去重 distinctselect distinct deptno from emp;--去重的要求:查询出来的两条数据,要求每一个字段的值都相同,才能达到去重效果select distinct deptno,ename from emp;--取别名--""原样输出 ,别名是小写的,有特殊符号存在,前后必须添加""--给字段取别名 (as) 别名select ename as "username", empno "员工 编号" from emp;--给表取别名: 表名 别名,注意:表取别名不能出现asselect ename 员工名称 from emp e;--伪列 :不存在的字段--表达式select distinct 123*456 乘积 from dept;--字符串用单引号表示 ,原样输出用双引号select empno,ename,123*345,'haha' 哈哈 from emp;--虚表 没有数据,没有字段select 123*456,'hehe' from al;--字符串的拼接 ||--查询员工姓名,结果前拼接SXT-select 'SXT-'||ename "尚学堂员工姓名",comm from emp;--null是空值,和数字运算,结果还是nullselect ename ,comm "原奖金",comm+100 "新奖金" from emp;--null 和 字符