oracle对象

recent object

function:

CREATE OR REPLACE FUNCTION "COMPUTEDELAYDAYS" (
controlSeq in varchar2
)
return number
as
--计算延期申请天数
iDays number(10,2);
begin
SELECT NVL(SUM(DELAY_DAYS),0) into iDays FROM LZCITY_APPROVE_DELAY_REQUEST WHERE CAN_DELAY=1
AND APPROVE_STATUS=2
AND CONTROL_SEQ=controlSeq;
if(iDays=null) then
iDays:=0;
end if;
return(iDays);
end;

++++++++++++++

CREATE OR REPLACE FUNCTION "COMPUTEDEALMAN_EXP" (
strCondition in varchar2
)
return varchar2 is
users varchar2(4000);
luser varchar2(4000);

CURSOR mycursor is
select u.user_code into luser from framework f, position p, base_user u
where f.fram_seq=p.posi_seq and p.empl_id=u.user_code(+)
and p.empl_id=u.user_code(+)
and f.para_seq=strCondition
order by f.ordr_no;
begin
users:=‘‘;
luser:=‘‘;
open mycursor;
loop
FETCH mycursor INTO luser;
EXIT WHEN mycursor%NOTFOUND;
--串起来
users:=users || luser || ‘;‘;
end loop;
close mycursor;

--去掉最后的";"符号
luser:=‘‘;
select substr(users,1,LENGTH(users)-1) into luser from dual;
return luser;
end ;

+++++++++++++++

过程:

CREATE OR REPLACE PROCEDURE "ADDRIGHTWITHSUB" (v_objectid varchar2,v_ownerType integer,v_ownerVal varchar2,v_listFile integer,v_readAllFile integer,v_newOwnerFile integer,v_updateAllFile integer,v_updateOwnerFile integer,v_delOwnerFile integer,
v_delAllFile integer,v_dirManager integer,v_evaluate integer,v_subscribe integer,v_manager integer,v_forbidAll integer,v_approve integer,v_downloadFile integer) as
flag integer;
v_rightId integer;
v_rightValSeq integer;
v_rightSeq integer;
rightparaId integer;
rightTreeIndex varchar2(2000);
dirTreeIndex varchar2(2000);
temp varchar2(4000);
begin
select seq_value+1 into v_rightValSeq from DS_DB_SEQ where seq_name=‘ds_right_id‘;
update DS_DB_SEQ set seq_value =v_rightValSeq where seq_name=‘ds_right_id‘;
commit;

select RIGHTID,RIGHTTYPE,treeIndex into v_rightId,flag,dirTreeIndex from DS_DIR where OBJECTID=v_objectid;
select paraid,treeindex into rightparaId,rightTreeIndex from DS_RIGHTINFO where RIGHTID=v_rightId;
-----dubug信息
-- insert into DS_OPERATOR (FLOWID,Operatorid,OPERATORDATE,SUMMARY) values(getNextVal(‘ds_operator_Id‘),9,SYSDATE,‘objectid:‘||v_objectid||‘ ownerVal:‘||v_ownerVal||‘ flag:‘||flag );
-----------
if flag=0 then
--修改的权限属于根权限
insert into DS_RIGHT (RIGHTID,OWNERTYPE,OWNERVAL,listFile,readAllFile,newOwnerFile,updateAllFile,updateOwnerFile,delOwnerFile,delAllFile,dirManager,evaluate,subscribe,manager,forbidAll,approve,downloadfile,RIGHTSEQ)
(select "RIGHTID",v_ownerType as OWNERTYPE,v_ownerVal as OWNERVAL,v_listFile,v_readAllFile,v_newOwnerFile,v_updateAllFile,v_updateOwnerFile,v_delOwnerFile,v_delAllFile,v_dirManager,v_evaluate,v_subscribe,v_manager,v_forbidAll,v_approve,v_downloadfile,v_rightValSeq as RIGHTSEQ from
DS_RIGHTINFO where substr(treeIndex,1,length(rightTreeIndex))=rightTreeIndex);
---把权限值插入到所有子节点中
update DS_RIGHTINFO
--修改权限最后更新标志
set MODIFYID = MODIFYID+1 where rightid in (select rightId from
DS_RIGHTINFO where substr(treeIndex,1,length(rightTreeIndex))=rightTreeIndex);
else if flag=1 then
--修改的权限属于继承权限
select seq_value+1 into v_rightSeq from DS_DB_SEQ where seq_name=‘ds_rightinfo_id‘;
update DS_DB_SEQ set seq_value =v_rightSeq where seq_name=‘ds_rightinfo_id‘;
---获取新的权限id值
commit;

temp:=rightTreeIndex||v_rightSeq||‘.‘;
insert into DS_RIGHTINFO(RIGHTID,MODIFYID,PARAID,TREEINDEX) values (v_rightSeq,0,v_rightId,temp);
--添加新的权限id到原来权限节点下
update DS_RIGHTINFO set PARAID = v_rightSeq where
rightid in (select RIGHTID from DS_DIR where substr(treeIndex,1,length(dirTreeIndex))=dirTreeIndex)
and PARAID = v_rightId;
---更新直接子节点的树结构连接(不更新索引)
update DS_DIR set righttype=0 where objectid=v_objectid;
update DS_DIR set rightid = v_rightSeq where substr(TREEINDEX,1,length(dirTreeIndex)) = dirTreeIndex and
rightid=v_rightId;
---更新目录树的节点对应的权限值
update DS_RIGHTINFO set treeIndex=temp||substr(treeIndex, length(rightTreeIndex)+1) where
rightid in (select RIGHTID from DS_DIR where substr(treeIndex,1,length(dirTreeIndex))=dirTreeIndex) and rightid <> v_rightSeq;
--更新索引
insert into DS_RIGHT (RIGHTID,OWNERTYPE,OWNERVAL,listFile,readAllFile,newOwnerFile,updateAllFile,updateOwnerFile,delOwnerFile,delAllFile,dirManager,evaluate,subscribe,manager,forbidAll,RIGHTSEQ)
(select V_RIGHTSEQ,OWNERTYPE,OWNERVAL,listFile,readAllFile,newOwnerFile,updateAllFile,updateOwnerFile,delOwnerFile,delAllFile,dirManager,evaluate,subscribe,manager,forbidAll,RIGHTSEQ from DS_RIGHT where RIGHTID = v_rightId);
---对权限做保护性拷贝
insert into DS_RIGHT (RIGHTID,OWNERTYPE,OWNERVAL,listFile,readAllFile,newOwnerFile,updateAllFile,updateOwnerFile,delOwnerFile,delAllFile,dirManager,evaluate,subscribe,manager,forbidAll,approve,downloadfile,RIGHTSEQ)
(select RIGHTID,v_ownerType as v_OWNERTYPE,v_ownerVal as OWNERVAL,v_listFile,v_readAllFile,v_newOwnerFile,v_updateAllFile,v_updateOwnerFile,v_delOwnerFile,v_delAllFile,v_dirManager,v_evaluate,v_subscribe,v_manager,v_forbidAll,v_approve,v_downloadfile,v_rightValSeq as RIGHTSEQ from
DS_RIGHTINFO where substr(treeIndex,1,length(temp))=temp);
--复制权限到所有子节点
update DS_RIGHTINFO set MODIFYID = MODIFYID+1 where rightid in
(select rightId from DS_RIGHTINFO where substr(treeIndex,1,length(temp))=temp);
---更新权限修改标志
end if;
end if;
end addRightWithSub;

CREATE OR REPLACE PROCEDURE "REFILENAME" (v_objectid integer,v_newFileName varchar2,isFile integer) is
v_pathname varchar2(4000);
v_treeIndex varchar2(4000);
v_fileName varchar2(255);
v_fullPathName varchar2(4000);
oldPathLength integer;
begin
if isFile=1 then
update DS_DBFILE set FILENAME=v_newFileName where OBJECTID=v_objectid;
else
select FILENAME,TREEINDEX,FULLPATHNAME into v_fileName,v_treeIndex,v_fullPathName from DS_DIR where OBJECTID=v_objectid;
update DS_DIR set FILENAME=V_newFileName where OBJECTID=v_objectid;
oldPathLength := Length(v_fullPathName);
v_pathName := substr(v_fullPathName,0,oldPathLength-length(v_fileName)-1)||V_newFileName||‘/‘;
update DS_DIR set FULLPATHNAME = v_pathName||substr(FULLPATHNAME,oldPathLength+1) where substr(TREEINDEX,0,length(v_treeIndex)) = v_treeIndex;
end if;
end refilename;

时间: 2024-10-09 21:37:38

oracle对象的相关文章

PL/SQL和Oracle对象

PL/SQL -一.变量 01)引用变量 -- 查询并打印7839的姓名和薪水 declare    --定义变量保存姓名和薪水    --pename varchar2(20);    --psal   number;    pename emp.ename%type;    psal   emp.sal%type; begin   -- 得到1234的姓名和薪水   select ename,sal into pename,psal from emp where empno=1234;   

Oracle03——游标、异常、存储过程、存储函数、触发器和Java代码访问Oracle对象

作者: kent鹏 转载请注明出处: http://www.cnblogs.com/xieyupeng/p/7476717.html 1.游标(光标)Cursor 在写java程序中有集合的概念,那么在pl/sql中也会用到多条记录,这时候我们就要用到游标,游标可以存储查询返回的多条数据. 语法: CURSOR  游标名  [ (参数名  数据类型,参数名 数据类型,...)]  IS  SELECT   语句; 例如:cursor c1 is select ename from emp; 游标

Oracle对象权限

对象权限指访问其他方案的权利,用户直接访问自己的方案的对象,但是如果要访问别的方案的 对象,则必须具有对象的权限. 比如smith用户要访问scott.emp表(scott:方案,emp:表),则不需再scott.emp 表上具有对象的权限. 常用的对象权限: Alter --修改(修改表结构) delete --删除 Select --查询 insert --添加 Update --修改(更新数据) index --索引 References --引用 execute --执行 显示对象权限

Oracle对象之表和索引的介绍

对于传统的关系数据库管理系统(RDBMS),比如Oracle.MySQL等,都是在数据库中存储和检索数据,在Oracle中,用schema来表示逻辑数据结构或模式对象的集合,模式对象是用户创建的,用来直接引用数据库中的数据,其中最重要的对象是表和索引. 表是数据库中数据组织的而基本单位,一个表描述了一个实体,比如一张students表,我们用一个表名(students)和一些列来定一个该实体,每一列表示学生的一个属性,而表呢,表示一些行的集合,每一行都记录一个特定的学生的信息. 索引在数据库中,

Oracle对象下集(序列、同义词、分区表、database link)

本人所有博文纯手码,给个关注或者赞吧!博主:张晨晨QQ:1445696451欢迎随时加Q讨论技术.一.Oracle的序列·序列是用来生成惟一的连续的整数的数据库对象.序列通常可以用来自动生成主键或者唯一键的值:可根据数值进行升序或者降序的排列·比如创建班级的学生信息登记表,可以将学号使用序列自动生成.班级的学号都是10000~10060这个范围,每登记一个学生,序列自动增长一个.1.创建序列的命令语法create sequence seq_name [start with interger] [

Oracle对象管理

一.用户管理 1.创建表空间 create tablespace school #指定表空间名称 datafile '/orc/app/oracle/oradata/school01.dbf' #指定数据文件路径 size 200M #指定表空间大小 autoextend on #设置表空间自动扩展 2.创建用户 create user c##tom #创建用户"Tom" identified by abc123 #设置用户密码"abc123" default ta

oracle对象之触发器

触发器 数据库触发器是一个与表相关联的.存储的PL/SQL程序.每当一个特定的数据操作语句(Insert,update,delete)在指定的表上发出时,Oracle自动地执行触发器中定义的语句序列. 1.触发器作用 数据确认  实施复杂的安全性检查 做审计,跟踪表上所做的数据操作等 数据的备份和同步 2.触发器的类型 语句级触发器 :在指定的操作语句操作之前或之后执行一次,不管这条语句影响了多少行 . 行级触发器(FOR EACH ROW) :触发语句作用的每一条记录都被触发.在行级触发器中使

oracle对象之存储函数

存储函数 create or replace function 函数名(Name in type, Name out type, ...) return 数据类型 is   结果变量 数据类型; begin   return(结果变量); end[函数名]; 存储过程和存储函数的区别 一般来讲,过程和函数的区别在于函数可以有一个返回值:而过程没有返回值. 但过程和函数都可以通过out指定一个或多个输出参数.我们可以利用out参数,在过程和函数中实现返回多个值. 一般来讲,有一个返回值的时候用存储

Oracle自定义数据类型 2 (调用对象方法)

调用对象方法 调用对象方法基于类型创建表后,就可以在查询中调用对象方法 A. 创建基于对象的表语法: create   table   <表名>   of   <对象类型>意义:此表具有该类型和member方法的所有属性, 我们不能通过DBA   STUDIO的表数据编辑器来编辑数据. 例:create   table   FLIGHT_SCH_TAB   of   FLIGHT_SCH_TYPE insert   into   FLIGHT_SCH_TAB     values(