存储过程 

一组用于完成特定数据库功能的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的更多相关文章

  1. Oracle存储过程procedure in、out、in out 模式参数【不发布,纯转】

    Oracle存储过程procedure in.out.in out 模式参数 Oracle存储过程基本语法介绍 注意存过不会自动提交,需要在存过本身添加commit; rollback;等语句

  2. Oracle 存储过程procedure之数据更新-游标

    在日常工作中,经常会碰到后台外导一批数据,并将外导数据处理至系统表中的情况. 面临这种情况,我一般采用写存储过程批处理的方式完成,写好一次以后,再次有导入需求时,只需要将数据导入到中间表,然后执行存储 ...

  3. Oracle存储过程procedure

    --给plsql块设置一个名称保存下来便于调用 /* Create or replace procedure 名称 As 声明变量 Begin //代码块 End; --plsql块 Declare ...

  4. Oracle存储过程Procedure语法及案例

    create or replace procedure replace(desstr in varchar2, replacestr in varchar2, tablename in varchar ...

  5. Oracle job procedure 存储过程定时任务

    Oracle job procedure 存储过程定时任务 oracle job有定时执行的功能,可以在指定的时间点或每天的某个时间点自行执行任务. 一.查询系统中的job,可以查询视图 --相关视图 ...

  6. 【转】Oracle job procedure 存储过程定时任务

    原文:Oracle job procedure 存储过程定时任务 oracle job有定时执行的功能,可以在指定的时间点或每天的某个时间点自行执行任务. 一.查询系统中的job,可以查询视图 --相 ...

  7. Oracle,Sql,procedure 感觉自己写的很棒的一个存储过程

    感觉自己写的很棒的一个Oracle存储过程,(其实想说很叼^,^). 集成了一堆操作数据的功能(至少几十), 包括存储过程执行异常信息输出帮助诊断. 亮点很多, 比如`over(partition b ...

  8. Oracle job procedure 存储过程定时任务(转自hoojo)

    Oracle job procedure 存储过程定时任务 oracle job有定时执行的功能,可以在指定的时间点或每天的某个时间点自行执行任务. 一.查询系统中的job,可以查询视图 --相关视图 ...

  9. oracle 存储过程

    来自:http://www.jb51.net/article/31805.htm Oracle存储过程基本语法 存储过程 1 CREATE OR REPLACE PROCEDURE 存储过程名 2 I ...

随机推荐

  1. 使用scrapy爬虫,爬取17k小说网的案例-方法二

    楼主准备爬取此页面的小说,此页面一共有125章 我们点击进去第一章和第一百二十五章发现了一个规律 我们看到此链接的  http://www.17k.com/chapter/271047/6336386 ...

  2. docker-compose部署ELK

    本章基于 https://www.cnblogs.com/lirunzhou/p/10550675.html 在此基础上将ELK系统docker-compose.yml化. 其docker-compo ...

  3. dml并行

    Enabling Parallel DMLA DML statement can be parallelized only if you have explicitly enabled paralle ...

  4. uni-app 引入本地iconfont的正确姿势以及阿里图标引入

    1.引入本地iconfont iconfont文件里面包含 iconfont.ttf.iconfont.css, 将 iconfont.tt64文件转位 base64.推荐转换工具地址:https:/ ...

  5. 企业面试必会shell

    企业面试题1: 使用for循环在/oldboy目录下通过随机小写10个字母加固定字符串oldboy批量创建10个html文件,名称例如为: [root@oldboy oldboy]# sh /serv ...

  6. node 和 npm 常用命令

    npm node 简述 快速入门 安装npm和管理npm版本 npm安装 更新npm npm -v npm install npm@latest -g npm install npm@next -g ...

  7. 利用Skywalking-netcore监控你的应用性能

    Skywalking SkyWalking开源项目由吴晟于2015年创建,同年10月在GitHub上作为个人项目开源. SkyWalking项目的核心目标,是针对微服务.Cloud Native.容器 ...

  8. 3、Linux常用命令

    查看网络服务:netstat netstat -nltp 如果提示:命令找不到,需要安装net-tools包 sudo yum install net-tools 文件下载:wget wget -O ...

  9. 平滑升级nginx到新版本

    这里测试一下nginx的平滑升级,以备不时之需 查看nginx版本号: [root@zklf-server01 ~]# /application/nginx/sbin/nginx -V nginx v ...

  10. Linux中伪分布的搭建

    一伪分布模式             特点:在单机上,模拟一个分布式的环境,具备Hadoop的所有功能                     HDFS:NameNode + DataNode + S ...