- 浏览: 275944 次
- 性别:
- 来自: 成都
文章分类
最新评论
-
yh008:
不错的工具类。 版面需要调整下,有些内容看不到了,只能复制粘贴 ...
Spring 优秀工具类盘点,第 1 部分: 文件资源操作二 -
手心的水滴:
function Foo() { (function( ...
js 两个小括号 ()() 的用法 -
showthesunli:
博主说了这么多,我来说说我的想法,不晓得对不对总结一下,如下代 ...
js 两个小括号 ()() 的用法 -
aqbzwxd:
就是这种盲目无原理依据的研究测试弄晕了我, 有必要这么做吗? ...
js 两个小括号 ()() 的用法 -
wst0350:
多谢
oracle 触发器
- 存储过程 包含三部分: 声明,执行部分,异常。
- 可以有无参数程序和带参数存储过程。
- 无参程序语法
- 1 create or replace procedure NoParPro
- 2 as ;
- 3 begin
- 4 ;
- 5 exception
- 6 ;
- 7 end;
- 8
- 带参存储过程实例
- 1 create or replace procedure queryempname(sfindno emp.empno%type) as
- 2 sName emp.ename%type;
- 3 sjob emp.job%type;
- 4 begin
- 5 ....
- 7 exception
- ....
- 14 end;
- 15
- 带参数存储过程含赋值方式
- 1 create or replace procedure runbyparmeters (isal in emp.sal%type,
- sname out varchar,sjob in out varchar)
- 2 as icount number;
- 3 begin
- 4 select count(*) into icount from emp where sal>isal and job=sjob;
- 5 if icount=1 then
- 6 ....
- 9 else
- 10 ....
- 12 end if;
- 13 exception
- 14 when too_many_rows then
- 15 DBMS_OUTPUT.PUT_LINE('返回值多于1行');
- 16 when others then
- 17 DBMS_OUTPUT.PUT_LINE('在RUNBYPARMETERS过程中出错!');
- 18 end;
- 19
- 过程调用
- 方式一
- 1 declare
- 2 realsal emp.sal%type;
- 3 realname varchar(40);
- 4 realjob varchar(40);
- 5 begin
- 6 realsal:=1100;
- 7 realname:='';
- 8 realjob:='CLERK';
- 9 runbyparmeters(realsal,realname,realjob); --必须按顺序
- 10 DBMS_OUTPUT.PUT_LINE(REALNAME||' '||REALJOB);
- 11 END;
- 12
- 方式二
- 1 declare
- 2 realsal emp.sal%type;
- 3 realname varchar(40);
- 4 realjob varchar(40);
- 5 begin
- 6 realsal:=1100;
- 7 realname:='';
- 8 realjob:='CLERK';
- 9 runbyparmeters(sname=>realname,isal=>realsal,sjob=>realjob); --指定值对应变量顺序可变
- 10 DBMS_OUTPUT.PUT_LINE(REALNAME||' '||REALJOB);
- 11 END;
- 12
create or replace procedure prc_update_tb01(Prm_Appcode OUT VARCHAR2, --执行代码 Prm_Errormsg OUT VARCHAR2 --错误消息 ) is v_root_id varchar2(10):='510401';--一级网格值(攀枝花市) type td02_table_type is TABLE OF td02%ROWTYPE INDEX BY BINARY_INTEGER; td02_TABLE td02_table_type; --td02 网格信息 东区 td02_TABLE1 td02_table_type; -- 街道网格 td02_TABLE2 td02_table_type; -- 社区网格 -- 可变数组 type four_id_type is table of varchar2(100) index by binary_integer; v_four_id four_id_type;--四级网格(社区...) type three_id_type is table of four_id_type index by binary_integer; v_three_id three_id_type;--三级网格(街道办...) type two_id_type is table of three_id_type index by binary_integer; v_two_id two_id_type;--二级网格(东区...) type one_id_type is table of two_id_type index by binary_integer; v_one_id one_id_type;--一级网格(攀枝花市) v_sql varchar2(100); --sql; BEGIN update tb01 t set ytd021=v_root_id;--更新为攀枝花市 commit; SELECT B.* BULK COLLECT INTO td02_TABLE--东区 FROM td02 B where b.ytd024 =v_root_id; for a in 1.. td02_TABLE.count loop --更新东区,西区.. --var_array(a):=td02_TABLE(a).YTD021; update tb01 t set ytd021=td02_TABLE(a).YTD021 where t.aab004 like '%'||td02_TABLE(a).ytd022||'%'; v_sql:='update tb01 t set ytd021='||CHR(39) || td02_TABLE(a).YTD021 || CHR(39) ||' where t.aab004 like '||CHR(39) ||'%'||td02_TABLE(a).ytd022||'%'||CHR(39); dbms_output.put_line('更新SQL:'||v_sql); end loop; commit; for j in 1.. td02_TABLE.count loop --更新街道 SELECT B.* BULK COLLECT INTO td02_TABLE1 FROM td02 B where b.YTD024 = td02_TABLE(j).ytd021; for c in 1.. td02_TABLE1.count loop --var_array(a):=td02_TABLE(a).YTD021; update tb01 t set ytd021=td02_TABLE1(c).YTD021 where t.aab004 like '%'||td02_TABLE1(c).ytd022||'%'; end loop; end loop; commit; for j in 1.. td02_TABLE1.count loop --更新社区 SELECT B.* BULK COLLECT INTO td02_TABLE2 FROM td02 B where b.YTD024 = td02_TABLE1(j).ytd021; for c in 1.. td02_TABLE2.count loop --var_array(a):=td02_TABLE(a).YTD021; update tb01 t set ytd021=td02_TABLE2(c).YTD021 where t.aab004 like '%'||td02_TABLE2(c).ytd022||'%'; end loop; end loop;commit; EXCEPTION WHEN OTHERS THEN Prm_Appcode := 'fail'; Prm_Errormsg := 'update tb01 fail!'; dbms_output.put_line('更新tb01出错..'); RETURN; end prc_update_tb01;
发表评论
-
oracle 异常处理
2010-06-02 19:01 18531、异常的优点 如果没有异常,在程序中,应当检查每个 ... -
oracle 行触发与语句触发
2010-05-25 12:49 1067oracle 行触发与语句触发的区别 1、行触发器有 f ... -
oracle 系统表
2010-05-21 12:28 821数据字典dict总是属于Oracle用户sys的。 1、 ... -
EXECUTE IMMEDIATE 执行sql语句
2010-05-21 10:54 3278在ORACLE的PL/SQL里:EXECUTE IMMEDIA ... -
Oracle正则表达式
2010-05-20 16:26 1337oracle的正则表达式(regular expression ... -
oracle 数组
2010-05-20 16:18 1102--固定数组 declare type type_ar ... -
Oracle 存储过程传入二维数组
2010-05-20 15:58 3662Oracle 存储过程传入二维数组 使用Ora ... -
存储过程操作同义词
2010-05-18 11:39 1513A用户ab01 表,B用户通过同义词访问A用户的ab01表 ... -
用Bulk Collect提高查询效率
2010-05-05 16:38 1233Oracle8i中首次引入了Bulk Collect特性, ... -
oracle 统计分组语句
2010-04-22 17:32 2170在应用系统开发中,进行需要统计数据库中的数据,当执行数据统计时 ... -
oracle 控制语句
2010-04-22 17:29 1274一、条件分支语句 条件分支语句用于依据特定的情况选择要执行的操 ... -
oracle 存储过程语法
2010-04-22 17:26 3281子程序是指被命名的PL/SQL块,这些块可以带有参数,可以在不 ... -
oracle 函数
2010-04-22 17:23 1435一、开发函数 函数用于返回特定数据,如果在应用程序中经常需要返 ... -
oracle 触发器
2010-04-22 17:19 4386触发器是指存放在数据库中,并被隐藏执行的存储过程。在Orac ... -
oracle 复合数据类型(pl/sql记录)
2010-04-22 17:16 2041为了简化单行多列数据的处理,可以使用PL/SQL记录;为了保留 ... -
oracle 复合数据类型(批量绑定)2
2010-04-22 17:12 1623一、PL/SQL集合 为了处理单列多行,可以使用PL/ ... -
oracle 复合数据类型(批量绑定)
2010-04-22 17:07 1279批量绑定是oracle9i新增加特性,是指执行单次SQL操作能 ... -
oracle 显示游标
2010-04-22 16:57 1427在oracle9i之前,为了查询处理select语句返回的多行 ... -
Oracle SQL语句(连接查询)
2010-04-22 16:02 3393一、内连接和外连接 内连接用于返回满足连接条件的记录;而 ... -
关于dbms_sql的使用
2010-03-29 16:31 891关于dbms_sql的使用 PL/SQL ...
相关推荐
Oracle 存储过程语法详解 Oracle 存储过程是一种编程对象,可以在 Oracle 数据库中执行复杂的逻辑操作。下面是 Oracle 存储过程语法的详细解释: 创建存储过程 存储过程的创建语法如下: ```sql CREATE OR ...
### Oracle存储过程语法及实例详解 #### 一、概述 Oracle存储过程是一种在数据库服务器上预编译并存储的程序块,它可以包含一系列SQL语句和控制流语句。存储过程提高了应用程序性能,并增强了数据的一致性和安全性...
以下是对Oracle存储过程语法的详细解释。 ### 1. 存储过程的组成部分 一个完整的存储过程包含三个主要部分: - **声明**:在这个部分,你可以声明变量、游标、常量等。例如: ```sql DECLARE sName emp.ename%...