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;

---------------------------------------------

oracle函数怎么遍历二维数组,oracle存储过程之游标查询,一维和二维数组,循环,条件判断例子...相关推荐

  1. php查询MySQL结果转化为数组_PHP如何将SQL查询结果转为多维数组,并按查询行输出...

    在php中,SQL查询数据库得到的是多行多列的数据,如何将查询结果转为二维数组,我的目的是把多行查询结果按行输出,有没有什么方法,求详细代码示例查询结果示例:reserv_idnametyper... ...

  2. spring访问oracle函数,spring调用带参数的oracle函数应注意的问题

    spring可以方便的访问oracle的存储过程.函数. spring文档举了一个访问sysdate的例子,它不需要输入参数,使用如下: public class TestStoredProcedur ...

  3. oracle函数分为几个大类,ORACLE常见分析函数有哪几类呢?

    而ORACLE的常见分析函数有三类: 1. OVER函数 分析函数的语法为: Java代码 FUNCTION_NAME(,...) OVER () 例: sum(sal) over (partitio ...

  4. Mendix敏捷开发零基础学习《二》-进阶(Microflow微流、表单验证、运算符、条件判断、数据嵌套、触发器、Debug问题跟踪、版本管理)

    目录结构 Mendix敏捷开发零基础学习<二> 一.Microflow微流 1.引言 2.常见的功能 3.微流可以做那些事情? 3.1 举例1(用微流打开新增页面) 3.2 举例2(用微流 ...

  5. Python 数据分析三剑客之 NumPy(五):数学 / 算术 / 统计 / 排序 / 条件 / 判断函数合集

    CSDN 课程推荐:<Python 数据分析与挖掘>,讲师刘顺祥,浙江工商大学统计学硕士,数据分析师,曾担任唯品会大数据部担任数据分析师一职,负责支付环节的数据分析业务.曾与联想.亨氏.网 ...

  6. if test 多条件_if函数进阶篇 嵌套+多条件判断

    if函数是Excel中最基础的函数,数据处理中经常用到,灵活运用将大大节省工作时间,下面小编的详细介绍下if函数的几种用法~ 基本用法 表达式:IF(Logical_test,Value_if_tru ...

  7. php each函数二维数组,PHP特定函数foreach遍历一二维数组

    foreach遍历数组的好是可以不知道数组的长度从而读出数组的key,name出来了,在php的foreach中有两种方法,arr_name as $value 和arr_name as $key = ...

  8. 算法013:二维数组中的查找-在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断中是否存在

    题目:在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数.示例: 现有 ...

  9. 编写一个函数get_average()获取整型数组元素的平均值。要求这个函数既可以用来求一维数组元素的平均值,也可以求二维数组元素的平均值。

    题目内容: 编写一个函数get_average()获取整型数组元素的平均值.要求这个函数既可以用来求一维数组元素的平均值,也可以求二维数组元素的平均值.在main()函数中通过具体的一维数组Array ...

最新文章

  1. V神再为BCH发声!
  2. WPF 开发前学习(一)
  3. RocketMQ角色介绍
  4. mysql命令实践_MySQL:常用命令行
  5. java中的 ok_java okhttp包的类特点
  6. 软件工程师的衰落与程序技术员的兴起
  7. nargout 【转】
  8. CAKeyframeAnimation简单实用
  9. qml之TextArea 添加滚动条
  10. 《21天学通C语言(第6版•修订版)》一1.7 问与答
  11. unc0ver 越狱工具来袭,支持iOS11.0~iOS14.8稳定越狱 更新至V8.0.2 支持 A7-A14
  12. 论文笔记Doubly Stochastic Variational Inference for Deep Gaussian Processes深度高斯过程的双重随机变分推理
  13. 坐火车硬座20小时是怎样的体验?
  14. 经典文学之三:鲁迅·故乡
  15. 安卓app上架各大应用商店
  16. 拼团系统开发的亮点与核心功能
  17. linux网络命令--ping
  18. [讨论]去掉office正版提醒
  19. 【Linux】用linux搭建代理服务器
  20. 初中使用计算机教学反思,初中信息技术教学反思(通用5篇)

热门文章

  1. powerdesinger 批量修改表前缀
  2. 环境变量配置步骤(误删除找回方法)
  3. android 组件透明,万能小组件透明小组件-万能小组件透明背景设置v1.0.0 安卓版_永辉资源网...
  4. 图解HTTP四:返回结果的 HTTP 状态码
  5. android游戏手柄,没手柄也不怕 键盘玩Android游戏攻略
  6. Web全栈~29.MySQL
  7. DRAM DDR4DDR5 UDIMMRDIMM的内存测试固件开发的经验总结
  8. Spring Boot技术栈博客企业前后端
  9. 删除记录中的某个字段的值
  10. TCP/IP Socket 服务器对接