oracle语句块调用
如果要写一个临时的语句块调用某个过程,可以参照以下方式:
declare
cursor v_is is
select distinct aac001 from sic84 where aab001=511500000999 ;
pi_data lew_pub.data;
po_fhz varchar2(1000);
po_msg varchar2(2000);
begin
for x in v_is loop
--select x.aac001 into PI_DATA.AAC001 from dual;
--select '110' into PI_DATA.AAE140 from dual ;
PI_DATA.AAC001 := x.aac001;
PI_DATA.AAE140 := '110';
lew_pub.repair_ac20_by_sj(pi_data, po_fhz, po_msg);
if po_fhz <> '1' then
dbms_output.put_line('出错了:'||po_msg);
end if;
end loop;
end;
循环修改序列号。
DECLARE CURSOR v_c IS SELECT * FROM sac15_tmp_wyl;
v_caz045 sac15.caz045%TYPE;
v_aac001 sac15.aac001%TYPE;
BEGIN
FOR x IN v_c LOOP
v_aac001 := x.aac001;
SELECT seq_bxgx_caz045.nextval INTO v_caz045 FROM dual;
UPDATE sac15_tmp_wyl SET CAZ045 = v_caz045 WHERE aac001 = v_aac001 AND aae140 = '';
END LOOP;
END;
批量授权语句:
DECLARE
CURSOR V_OPER IS
SELECT *
FROM FW_OPERATOR
WHERE LENGTH(BAE001) = 8
AND BAE001 LIKE '511521%';
V_ID NUMBER(12); BEGIN
FOR V_O IN V_OPER LOOP
SELECT SEQ_FW_OPERATOR2RIGHT.NEXTVAL INTO V_ID FROM DUAL;
INSERT INTO FW_OPERATOR2RIGHT
VALUES
(V_ID, V_O.OPERID, '', 1, 1, 20150923170000, NULL, 1, NULL);
SELECT SEQ_FW_OPERATOR2RIGHT.NEXTVAL INTO V_ID FROM DUAL;
INSERT INTO FW_OPERATOR2RIGHT
VALUES
(V_ID, V_O.OPERID, '', 1, 1, 20150923170000, NULL, 1, NULL);
END LOOP;
END;
declare
cursor v_is is
select distinct aac001 from sic84 where aab001=511500000999 ;
pi_data lew_pub.data;
po_fhz varchar2(1000);
po_msg varchar2(2000);
begin
for x in v_is loop
--select x.aac001 into PI_DATA.AAC001 from dual;
--select '110' into PI_DATA.AAE140 from dual ;
PI_DATA.AAC001 := x.aac001;
PI_DATA.AAE140 := '';
lew_pub.repair_ac20_by_sj(pi_data, po_fhz, po_msg);
if po_fhz <> '' then
dbms_output.put_line('出错了:'||po_msg);
end if;
end loop;
end;
调用过程的另一个例子,20160801加,
declare
pi_aac002 varchar2(20) := '51112219560108xxxx'; v_cnt number(2);
v_cnt_sic84 number(2);
v_aac001 ac01.aac001%type;
v_bae001 ac01.bae001%type;
v_cae122_min sic84.cae122%type;
v_cae122_max sic84.cae122%type;
v_aae180_avg sic84.aae180%type;
v_aab001 sic84.aab001%type;
v_procname varchar2(200);
v_procparams varchar2(500);
PO_FHZ varchar2(400);
po_msg varchar2(400);
begin
select count(1) into v_cnt from ac01 a where a.aac002 = pi_aac002;
if v_cnt > 0 then
select aac001 into v_aac001 from ac01 a where a.aac002 = pi_aac002;
select bae001 into v_bae001 from ac01 a where a.aac002 = pi_aac002; for nf in 1990 .. 1995 loop
select count(1)
into v_cnt_sic84
from sic84 a
where aac001 = v_aac001
and substr(a.aae002, 1, 4) = nf;
--只有sic84 有数据才更新ac20
if v_cnt_sic84 > 0 then
select min(a.cae122)
into v_cae122_min
from sic84 a
where aac001 = v_aac001
and substr(a.aae002, 1, 4) = nf;
select max(a.cae122)
into v_cae122_max
from sic84 a
where aac001 = v_aac001
and substr(a.aae002, 1, 4) = nf;
select aab001
into v_aab001
from sic84 a
where aac001 = v_aac001
and substr(a.aae002, 1, 4) = nf
and rownum = 1; select avg(nvl(a.aae180, 0))
into v_aae180_avg
from sic84 a
where aac001 = v_aac001
and substr(a.aae002, 1, 4) = nf;
-- 插入ac20
delete from ac20 a
where aac001 = v_aac001
and substr(a.aae041, 1, 4) = nf;
insert into ac20
(AAZ157,
AAZ159,
BAE001,
AAB001,
AAC001,
AAE140,
AAC013,
CAC012,
AAE041,
AAE042,
AAE180,
CAC036,
AAA041,
AAA042,
AAA043,
AAC402,
AAB301)
values
(seq_bxgx_aaz157.nextval,
null,
v_bae001,
v_aab001,
v_aac001,
'110',
null,
null,
v_cae122_min,
v_cae122_max,
v_aae180_avg,
null,
0.0800,
0.1200,
0.0000,
'0',
null);
end if;
end loop;
-- 循环调用修复sic86 的过程
pkg_zhgl.Ylgrzh_Cxtj(v_aac001, '110', PO_FHZ, PO_MSG); end if; end;
oracle语句块调用的更多相关文章
- Oracle语句块PL/SQL循环判断
- --pl/sql Procedural Language /sql --被数据库编译保存,由用户调用 --程序块 /* 语法 Declare – 声明变量 --声明变量 Age int; //没有 ...
- Oracle使用语句块之循环插入数据
1.业务要求: 将oracle表A的整表的数据一次性导入到表B中 , 以A_ID为外键关联. (*******如果开发环境和实际生产环境的数据一致,而且数据量比较小情况,可以直接手动添加数据; ** ...
- 53个Oracle语句优化规则详解(转)
Oracle sql 性能优化调整 1. 选用适合的ORACLE优化器 ORACLE的优化器共有3种:a. RULE (基于规则) b. COST (基于成本) c. CHOOSE ...
- [转]Oracle数据块体系的详细介绍
数据块概述Oracle对数据库数据文件(datafile)中的存储空间进行管理的单位是数据块(data block).数据块是数据库中最小的(逻辑)数据单位.与数据块对应的,所有数据在操作系统级的最小 ...
- static{ }语句块详解
static{}(即static块),会在类被加载的时候执行且仅会被执行一次,一般用来初始化静态变量和调用静态方法.举ge例子: public class Test { public static i ...
- begin-end语句块在mysql中的使用问题
在最近在通过navicate连接mysql数据库时,进行查询操作: delimiter $$BEGIN SET @a=1; if (@a > 0) THEN SELECT COUNT(*) fr ...
- 转 java中static{}语句块详解
原文地址:http://blog.csdn.net/lubiaopan/article/details/4802430 感谢原作者! static{}(即static块),会在类被加载的时候执 ...
- java中static{}语句块详解
static{}(即static块),会在类被加载的时候执行且仅会被执行一次,一般用来初始化静态变量和调用静态方法,下面我们详细的讨论一下该语句块的特性及应用. 一.在程序的一次执行过程中,stati ...
- java synchronized静态同步方法与非静态同步方法,同步语句块
摘自:http://topmanopensource.iteye.com/blog/1738178 进行多线程编程,同步控制是非常重要的,而同步控制就涉及到了锁. 对代码进行同步控制我们可以选择同步方 ...
随机推荐
- IDEA 15 社区版 Maven项目 启动Tomcat调试
1.在pom下添加Tomcat插件: <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifac ...
- Hadoop MR Job 关于如何控制Map Task 数量
整理下,基本分两个方式: 一.对于大量大文件(大于block块设置的大小) 增大minSize,即增大mapred.min.split.size的值,原因:splitsize=max(minisize ...
- hrtimer 高精定时器使用例子
在kernel,有个线程每个十秒往上层系统上报battery及USB的状态信息. 加入直接sleep 10 秒的话,插入USB的时候不能及时更新状态,这个时候就可以使用 hrtimer + wait ...
- poj 3422 Kaka's Matrix Travels 费用流
题目链接 给一个n*n的矩阵, 从左上角出发, 走到右下角, 然后在返回左上角,这样算两次. 一共重复k次, 每个格子有值, 问能够取得的最大值是多少, 一个格子的值只能取一次, 取完后变为0. 费用 ...
- codeforces 508D . Tanya and Password 欧拉通路
题目链接 给你n个长度为3的子串, 这些子串是由一个长度为n+2的串分割得来的, 求原串, 如果给出的不合法, 输出-1. 一个欧拉通路的题, 将子串的前两个字符和后两个字符看成一个点, 比如acb, ...
- 图标字体IcoMoon 使用
IcoMoon 使用官方地址 http://icomoon.io/实际上,它是一种字体,只不过这种字体的字象图标一样,比如windows中自带的MT Extra Webdings Wingdings字 ...
- 射频识别技术漫谈(26)——Felica的文件系统
Felica的文件系统使用“系统\域\服务\数据块”的结构,如下图所示.通过这种结构实现对卡片非易失性存储区的使用和操作. Fe ...
- HDU 3360 National Treasures
题目大意:大厅每个位置都有一个文物或者一个守卫,文物是安全的前提是: 关键位置上必须有一个守卫,或者文物本身的位置上有一个守卫.求保证每个文物是安全的守卫的最少数量. #include <cst ...
- Spring MVC遭遇checkbox的问题解决方式
Spring MVC遭遇checkbox的问题是:当checkbox全不选时候,则该checkbox域的变量为null,不能动态绑定到spring的controller方法的入參上,并抛出异常. 解决 ...
- Android多线程及异步处理问题
1.问题提出 1)为何需要多线程? 2)多线程如何实现? 3)多线程机制的核心是啥? 4)到底有多少种实现方式? 2.问题分析 1)究其为啥需要多线程的本质就是异步处理,直观一点说就是不要让用户感觉到 ...