create or replace procedure init_permission(custId IN varchar) is permId varchar(20); counter BINARY_INTEGER; begin --------------------------------------------- DECLARE --定义许可记录类型 TYPE type_permission IS RECORD ( appid varchar(1),domain varchar(20),action varchar(40),descript varchar(100)); --定义许可二维数组类型 TYPE type_permission_array IS TABLE OF type_permission INDEX BY BINARY_INTEGER; --定义字符串一维数组类型 TYPE type_str_array IS TABLE OF varchar(30) INDEX BY BINARY_INTEGER; --创建许可二维数组 permArr type_permission_array; --创建许可记录 perm type_permission; --创建账户ID数组 acctIdArr type_str_array; --创建用户ID数组 userIdArr type_str_array; --初始化数组 begin --初始化许可二维数组 --- perm.appid:=2; perm.domain:='transfer'; perm.action:='00901'; perm.descript:='付款到关联账户'; permArr(1) := perm; --- perm.appid:=2; perm.domain:='transfer'; perm.action:='00700'; perm.descript:='付款到银行-单笔发起'; permArr(2) := perm; --初始化账户ID数组 --定义查询账户ID游标 DECLARE cursor acctCursor(custId varchar) is select a.acct_id,a.acct_name from acps_acct_mast a where a.cust_id=custId; begin --循环读取账户ID游标,并初始化账户ID数组 counter:=1; for acct in acctCursor(custId) loop acctIdArr(counter):=acct.acct_id; counter:=counter+1; end loop; --结束循环 end; --结束定义账户ID游标 --初始化用户ID数组 --定义查询用户ID游标 DECLARE cursor userCursor(custId varchar) is select t.user_id,t.oper_id from user_info t where t.cust_id=custId; begin --循环读取用户ID游标,并初始化用户ID数组 counter:=1; for usr in userCursor(custId) loop userIdArr(counter):=usr.user_id; counter:=counter+1; end loop; --结束循环 end; --结束定义用户ID游标 --循环许可二维数组 FOR i IN 1 .. permArr.count LOOP --循环账户ID数组 FOR j IN 1 .. acctIdArr.count LOOP --获取许可ID select security_permission_id_seq.nextval into permId from dual; --插入该账户的许可 insert into security_permission (PERMISSION_ID, ACTION, INSTANCE, APPID, DOMAIN, DESCRIPTION, CREATED_TS, LAST_UPD_TS, LAST_UPD_TRANCODE) values (permId, permArr(i).action, acctIdArr(j), permArr(i).appid, permArr(i).domain, permArr(i).descript, sysdate, sysdate, ''); --循环用户ID数组 FOR k IN 1 .. userIdArr.count LOOP --插入用户与许可关联记录 insert into security_user_permission (SQ, USER_ID, PERMISSION_ID, DESCRIPTION, CREATED_TS, LAST_UPD_TS, LAST_UPD_TRANCODE) values (SECURITY_USER_PERMISSION_SEQ.Nextval, userIdArr(k), permId, '', sysdate, sysdate, ''); end loop; --结束循环用户ID数组 end loop; --结束循环账户ID数组 end loop; --结束循环许可二维数组 end; --结束数组初始化 --------------------------------------------- end; ----------------------------- --call init_permission('fhwc2');
和
create or replace procedure init_corp(custId IN varchar, custName IN varchar) is acctId varchar(20); email varchar(30); begin --------------------------------------------- --企业邮箱 email := custId || '@sys.com'; --创建1个企业客户 register_cust_corp(custId, custName, email); --创建3个不同角色的企业用户 register_user(email, '001', custId || '业务员', '22', custId); register_user(email, '101', custId || '财务员', '21', custId); register_user(email, '999', custId || '管理员', '20', custId); --定义一维数组 declare TYPE my_array IS TABLE OF varchar(30) INDEX BY BINARY_INTEGER; --创建权限数组 txnCds my_array; BEGIN --初始化权限数组 txnCds(1) := '00700'; txnCds(2) := '00900'; txnCds(3) := '00901'; txnCds(4) := '00100'; txnCds(5) := '00500'; txnCds(6) := '00800'; --创建账户 --循环创建三个账户 FOR i IN 1 .. 3 LOOP --初始化账户ID select lpad(ACPS_TRAN_SQ_SEQ.Nextval, 19, '0') into acctId from dual; --创建1个普通人民币账户 register_acct(acctId, 'SYS普通人民币账户' || i, custId); --循环开通交易权限 FOR i IN 1 .. txnCds.count LOOP --开通账户交易权限 open_acct_tran_pri(acctId, txnCds(i)); END LOOP; --结束循环 END LOOP; --结束循环创建三个账户 END; --------------------------------------------- end; --------------------------------------------- --call init_corp('f2','方红文2'); ----------------------------------------------------
还有
create or replace procedure register_user(email IN varchar, operId IN varchar, operName IN varchar, userType IN varchar, custId IN varchar) is userId varchar(20); begin --获取用户ID select USER_INFO_SEQ.Nextval into userId from dual; --如果是财务员和管理员,则打开工作流审批权限 if(userType='20' or userType='21') then --创建工作流审批权限 insert into SECURITY_USER_ROLE(SQ,USER_ID,ROLE_ID,APPID,CREATED_TS,LAST_UPD_TS) values(SECURITY_USER_ROLE_SEQ.Nextval,userId,'2','2',sysdate,sysdate); end if; end; ---------------------------------------------
相关推荐
在Java编程中,与Oracle数据库交互是常见的任务之一,而调用Oracle存储过程可以实现复杂的业务逻辑。本文将深入探讨如何在Java中调用Oracle存储过程,并输出自定义对象或二维表,以此提升数据处理效率。 首先,我们...
在实际开发过程中,当需要返回复杂的数据结构,如二维数组或结果集时,可以通过存储过程中使用集合数据结构来实现。 #### 2. PL/SQL存储过程及Java程序的编写 ##### 2.1 索引表作为输出参数 索引表是一种非常灵活...
- **控制语句**:实现流程控制,如循环、条件判断等。 - **动态SQL**:运行时构建和执行SQL语句。 - **错误处理**:捕获和处理异常。 - **游标**:用于处理记录集的对象。 - **子程序**:包括过程和函数,用于...
Oracle数据库系统是数据库领域最优秀的数据库之一,《Oracle11g从入门到精通》以Oracle最新版本Oracle 11g为蓝本,系统地讲述了Oracle数据库的概念、管理和应用开发等内容。 全书结构合理、内容翔实、示例丰富...
解决这个问题的方法之一是在查询时使用`TO_CHAR`函数转换日期为字符串,或者调整会话的NLS_DATE_FORMAT设置。 #### 六、有参数传入并且输出查询结果的实例 当动态SQL需要接收参数时,可以使用`EXEC SQL WHENEVER`...
- 矩阵报表是一种特殊的报表形式,常用于展示二维数据。 **11. Report编译出错** - 探讨了常见的Report编译错误及其解决方案。 --- #### 三、Oracle数据库基础 **1. 常用函数** - Oracle提供了丰富的内置函数来...
ORACLE数据库系统是美国ORACLE公司(甲骨文)提供的以分布式数据库为核心的一组软件产品,是目前最流行的客户/服务器(CLIENT/SERVER)或B/S体系结构的数据库之一。 拉里•埃里森 就业前景 从就业与择业的...
Oracle数据库系统是数据库领域最优秀的数据库之一,《Oracle11g从入门到精通》以Oracle最新版本Oracle 11g为蓝本,系统地讲述了Oracle数据库的概念、管理和应用开发等内容。 全书结构合理、内容翔实、示例丰富...
- **表**:用于存储数据的二维表格。 - **视图**:虚拟表,其内容由查询语句决定。 - **索引**:用于提高查询效率的数据结构。 - **存储过程和函数**:可重用的PL/SQL代码。 **5.2 表空间** - **表空间管理**:...
对象关系模型使用列来存储对象,可以直接操作几何数据,而关系模型则通过二维表存储对象,适合于分布式数据库环境,但在空间索引和查询性能上略逊一筹。 【SDO_GEOMETRY 对象类型】 在对象关系模型下,Oracle ...
这组数据可以是二维数组或其他合适的数据结构。执行oci_execute时,数据库一次性处理整个数据集,而不是逐条插入。 4. **示例代码**:oci_batch_source文件中的代码可能展示了如何初始化环境、建立连接、准备SQL...
12. 当一个二维表(B表)包含另一个二维表(A表)的主关键字时,A表的主关键字成为B表的外部关键字。 13. 空值(NULL)表示字段或变量无确定值,不同于空字符串、空格或数值0。 14. 查询是只读的,但视图可以更新源...
- **数据库表**:用于存储数据的二维表格,由行和列组成。 - **SQL\*Plus环境**:Oracle提供的交互式命令行工具,用于执行SQL语句和管理数据库。 - **SQL指令**:用于查询、更新、插入和删除数据的标准语言。 #### ...
6. 简单的一维和二维数组:介绍数组的声明、初始化和操作,以及二维数组的使用。 7. C语言文件操作:讲解如何读写文件,包括文本文件和二进制文件的处理。 8. 预处理与自定义数据类型:涵盖宏定义、条件编译以及...
PL/SQL(Procedural Language for SQL)是一种面向过程的语言,专为Oracle数据库设计,用于编写存储过程、函数和触发器。PL/SQL的特点包括: - **块结构**:PL/SQL代码通常由多个块组成,每个块可以包含变量声明、...
- **二维嵌套表**:嵌套表中的元素也是嵌套表。 - **集合方法**: - `EXISTS`:检查集合中是否存在某个值。 - `COUNT`:计算集合中元素的数量。 - `LIMIT`:限制集合中元素的数量。 - `FIRST` 和 `LAST`:获取...
数据库中的数据并不总是以简单的二维表格形式存在,有时需要表示层级关系,这就是树形结构。每个节点都有一个父节点(除了根节点),并且可以有多个子节点。在描述这类数据时,我们通常会用到一个自引用的字段,...
数组是Java中基本的数据结构,分为一维数组、二维数组等,用于存储固定数量的同类型元素。数组的特性包括固定大小、索引访问(从0开始)、内存连续等。 【多线程】 在Java中,多线程是并发编程的重要概念,常用于...