Oracle 存储过程 PROCEDURE
存储过程
一组用于完成特定数据库功能的SQL语句集,该SQL语句集经过编译后存储在数据库系统中。在使用时候,用户通过指定已经定义的存储过程名字并给出相应的存储过程参数来调用并执行它,从而完成一个或一系列的数据库操作。
包含三部分:过程声明,执行过程部分,存储过程异常(可选)。
示例
create or replace procedure sp_
( p_sResult out integer,--返回值
p_ID in number --ID
)
as
v_id number(16);
cursor v_chac_cr is
select t.money from T001 t where t.sid=p_ID;--游标
begin
open v_chac_cr();
loop
fetch v_chac_cr into v_id;
exit when v_chac_cr%notfound;
insert into F002(cnt) values (v_id);
end loop;
close v_chac_cr;
commit;
p_sResult:=1;
exception--例外处理
when others then
p_sResult:=0;
rollback;
end sp_;
项目运用
1.获取表下一个ID值
CREATE OR REPLACE PROCEDURE PNEXTID
(
tablename IN VARCHAR2 ,
idno OUT NUMBER
)
IS
sqlstring VARCHAR2 ( 500 );
BEGIN
sqlstring := 'SELECT nvl(max(id),0)+1 FROM ' ||tablename;
execute immediate sqlstring into idno; -- 动态执行
merge into tSequence a using ( select idno as ID, tablename as Name from dual) b --组合成表 merge into 确定表
on (upper(a.Name)=upper(b.Name)) --表名大写化
when matched then update set a.ID= case when b.ID>a.ID then b.ID else a.ID+ 1 end -- update; case when then else end;
when not matched then insert (ID, Name ) values (b.ID,b.Name); --insert;
select ID into idno from tSEQUENCE WHERE upper( name ) = upper(tablename);
EXCEPTION
WHEN OTHERS THEN
idno := - 1 ;
END pNextID;
2.返回列表数据(游标)
CREATE OR REPLACE PROCEDURE SP_CONTENT (
o_result out types.cursorType, --结果集
ip_pwf in varchar2) --关联流程
as
/* --类型声明是游标变量
create or replace package TestPackage is type outlist is ref cursor;
*/
v_sql varchar2(1000);
vn_count numeric(12,0);
vn_num numeric(12,0);
vn_id numeric(12,0);
vs_table varchar2(30);
vn_inst numeric(12,0);
begin
vn_count:=length(ip_pwf);
vn_num:=instr(ip_pwf,'.');
vn_id:=to_number(substr(ip_pwf,1,vn_num-1));
vs_table:=substr(ip_pwf,vn_num+1,vn_count-vn_num);
begin
v_sql:='select nvl(max(job_code),0) from '||vs_table||' where company = '||vn_id||'';
execute immediate v_sql into vn_inst;
exception
when others then
vn_inst:=0;
end;
open o_result for
select caller,enddate,content from tuser t where class_code < vn_inst;
end SP_CONTENT;
Oracle 存储过程 PROCEDURE的更多相关文章
- Oracle存储过程procedure in、out、in out 模式参数【不发布,纯转】
Oracle存储过程procedure in.out.in out 模式参数 Oracle存储过程基本语法介绍 注意存过不会自动提交,需要在存过本身添加commit; rollback;等语句
- Oracle 存储过程procedure之数据更新-游标
在日常工作中,经常会碰到后台外导一批数据,并将外导数据处理至系统表中的情况. 面临这种情况,我一般采用写存储过程批处理的方式完成,写好一次以后,再次有导入需求时,只需要将数据导入到中间表,然后执行存储 ...
- Oracle存储过程procedure
--给plsql块设置一个名称保存下来便于调用 /* Create or replace procedure 名称 As 声明变量 Begin //代码块 End; --plsql块 Declare ...
- Oracle存储过程Procedure语法及案例
create or replace procedure replace(desstr in varchar2, replacestr in varchar2, tablename in varchar ...
- Oracle job procedure 存储过程定时任务
Oracle job procedure 存储过程定时任务 oracle job有定时执行的功能,可以在指定的时间点或每天的某个时间点自行执行任务. 一.查询系统中的job,可以查询视图 --相关视图 ...
- 【转】Oracle job procedure 存储过程定时任务
原文:Oracle job procedure 存储过程定时任务 oracle job有定时执行的功能,可以在指定的时间点或每天的某个时间点自行执行任务. 一.查询系统中的job,可以查询视图 --相 ...
- Oracle,Sql,procedure 感觉自己写的很棒的一个存储过程
感觉自己写的很棒的一个Oracle存储过程,(其实想说很叼^,^). 集成了一堆操作数据的功能(至少几十), 包括存储过程执行异常信息输出帮助诊断. 亮点很多, 比如`over(partition b ...
- Oracle job procedure 存储过程定时任务(转自hoojo)
Oracle job procedure 存储过程定时任务 oracle job有定时执行的功能,可以在指定的时间点或每天的某个时间点自行执行任务. 一.查询系统中的job,可以查询视图 --相关视图 ...
- oracle 存储过程
来自:http://www.jb51.net/article/31805.htm Oracle存储过程基本语法 存储过程 1 CREATE OR REPLACE PROCEDURE 存储过程名 2 I ...
随机推荐
- Python multiprocessing
 推荐教程 官方文档 multiprocess各个模块较详细介绍 廖雪峰教程--推荐 Pool中apply, apply_async的区别联系 (推荐)python多进程的理解 multiproce ...
- Mybatis 常用注解
Mybatis常用注解对应的目标和标签如表所示: 注解 目标 对应的XML标签 @CacheNamespace 类 <cache> @CacheNamespaceRef 类 <cac ...
- linux deepin 无线网卡不能用,打不开
今天安装了NVIDIA的大黄蜂驱动,重启,开机,无线网打不开了, (后来又看到蓝牙功能没了,忙碌中知道了wifi和蓝牙是在一起的,一损俱损!) 折腾了一下午 首先,我上deepin官网找了一圈,没解决 ...
- 企业面试必会shell
企业面试题1: 使用for循环在/oldboy目录下通过随机小写10个字母加固定字符串oldboy批量创建10个html文件,名称例如为: [root@oldboy oldboy]# sh /serv ...
- 2018-2019-2 网络对抗技术 20165323 Exp1 PC平台逆向破解
实验目的 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符串. 该程序同时包含另一个代码片段,getShe ...
- ASP.NET Core快速入门学习笔记(第3章:依赖注入)
课程链接:http://video.jessetalk.cn/course/explore 良心课程,大家一起来学习哈! 任务16:介绍 1.依赖注入概念详解 从UML和软件建模来理解 从单元测试来理 ...
- mybatis和hibernate中的懒加载
概念:所谓懒加载就是延时加载,延迟加载.什么时候用懒加载呢,我只能回答要用懒加载的时候就用懒加载.至于为什么要用懒加载呢,就是当我们要访问的数据量过大时,明显用缓存不太合适,因为内存容量有限 ,为了减 ...
- SQL反模式学习笔记1 开篇
什么是“反模式” 反模式是一种试图解决问题的方法,但通常会同时引发别的问题. 反模式分类 (1)逻辑数据库设计反模式 在开始编码之前,需要决定数据库中存储什么信息以及最佳的数据组织方式和内在关联方式. ...
- Windows下python2与python3兼容设置
分别安装python2与python3后,我想直接通过命令python2.pip2与python3.pip3区分: 分别进入python安装目录下,修改python.exe为python2.exe.p ...
- AspNet Core下利用 app-metrics+Grafana + InfluxDB实现高大上的性能监控界面
在日常系统工作中,我们为了洞察系统的问题和运作情况通常会记录日志的方式来进行分析,但是在很多情况下都是被动的在出问题后才会去查日志.在很多时候,我们可能更需要相对实时的了解整个系统或者某一时段的运行的 ...