oracle存储过程粗解
存储过程创建的语法:
create or replace procedure 存储过程名(param1 in type,param2 out type)
as
变量1 类型(值范围);变量2 类型(值范围);
Begin
Select count(*) into 变量1 from 表A where列名=param1;
If (判断条件) then
Select 列名 into 变量2 from 表A where列名=param1;
Dbms_output。Put_line(‘打印信息’);
Elsif (判断条件) then
Dbms_output。Put_line(‘打印信息’);
Else
Raise 异常名(NO_DATA_FOUND);
End if;
Exception
When others then
Rollback;
End;
这个语法结构基本就这样吧,但是它比较灵活。存储过程其实用熟练了之后在实际开发过程中的意义个人觉得还是很大的,很方便,最基础的就是会减少程序和数据库交互的次数。
上个例子更理解一下吧。
create or replace procedure test_1(username_1 VARCHAR2,userid_1 NUMBER) is
--用到的参数
countNum number;
lineno_2 number;
begin
lineno_2:=0;
--根据in的参数userid_1查询用户表中是否有数据存在
select nvl(count(1),0) into countNum from user_info where user_code=userid_1 and user_role='SYS_ROLE'; loop--十次循环后跳出
exit when lineno_2 > 10;
if countNum>0 then insert into user_info_copy(user_no,user_name) values (userid_1,username_1);--表数据复制十次
lineno_2:=lineno_2+1; end if;
end loop;
update user_status set status=0,modtime=sysdate where lngrsOid=userid_1;--更新用户状态
commit;
end;
这个小例子循环可以换种方式会更简单,用游标就好,这里只是想尽量直观一点,好理解,编码的时候部分的逻辑判断可以一起挪到存储过程里,而不用查询count调一次数据库,再逻辑处理调一次数据库,这样效率会有很大不同。
oracle存储过程粗解的更多相关文章
- ORACLE存储过程详解
1.定义 所谓存储过程(Stored Procedure),就是一组用于完成特定数据库功能的SQL语句集,该SQL语句集经过编译后存储在数据库系统中.在使用时候,用户通过指定已经定义的存储过程名字并给 ...
- Oracle存储过程详解(引用)+补充(转) dbms_output包 good
执行存储过程时,execute和call的区别 EXEC is a sqlplus command that put its argument as an anonymous pl/sql block ...
- Oracle创建表语句(Create table)语法详解及示例、、 C# 调用Oracle 存储过程返回数据集 实例
Oracle创建表语句(Create table)语法详解及示例 2010-06-28 13:59:13| 分类: Oracle PL/SQL|字号 订阅 创建表(Create table)语法详解 ...
- Oracle/PLSQL存储过程详解
原文链接:https://blog.csdn.net/zezezuiaiya/article/details/79557621 Oracle/PLSQL存储过程详解 2018-03-14 17:31: ...
- Oracle存储过程和自定义函数
新博客文章链接,欢迎大家评论探讨 概述 存储过程和存储函数是指存储在数据库中供所有用户程序调用的子程序叫存储过程.存储函数. 异同点: 存储过程和存储函数的相同点:完成特定功能的程序. 存储过程和存储 ...
- 【Oracle】详解ORACLE中的trigger(触发器)
本篇主要内容如下: 8.1 触发器类型 8.1.1 DML触发器 8.1.2 替代触发器 8.1.3 系统触发器 8.2 创建触发器 8.2.1 触发器触发次序 8.2.2 创建DML触发器 8.2. ...
- Oracle存储过程创建及调用
在大型数据库系统中,有两个很重要作用的功能,那就是存储过程和触发器.在数据库系统中无论是存储过程还是触发器,都是通过SQL 语句和控制流程语句的集合来完成的.相对来说,数据库系统中的触发器也是一种存储 ...
- 问题:Oracle出发器;结果:1、Oracle触发器详解,2、Oracle触发器示例
ORACLE触发器详解 本篇主要内容如下: 8.1 触发器类型 8.1.1 DML触发器 8.1.2 替代触发器 8.1.3 系统触发器 8.2 创建触发器 8.2.1 触发器触发次序 8.2.2 创 ...
- (转)oracle视图详解
Oracle视图详解 一. 视图的定义 视图(view),也称虚表, 不占用物理空间,这个也是相对概念,因为视图本身的定义语句还是要存储在数据字典里的.视图只有逻辑定义.每次使用的时候,只是重新执 ...
随机推荐
- 一步步做程序优化-讲一个用于OpenACC优化的程序(转载)
一步步做程序优化[1]讲一个用于OpenACC优化的程序 分析下A,B,C为三个矩阵,A为m*n维,B为n*k维,C为m*k维,用A和B来计算C,计算方法是:C = alpha*A*B + beta* ...
- wordpress问题集锦
1.内容不自动换行 找到对应的样式,添加如下代码,width根据具体情况修改. width:640px;white-space:normal;word-break:break-all;word-wra ...
- Drupal 新建Modules
最简单的模块包含了2个文件夹,它们放置于同一个文件夹下:包含模块信息的文件以.info为后缀名,而实现功能的文件则以.module结尾. 可以给模块一个友好的(human-readable)名字,但是 ...
- React dangerouslySetInnerHTML - 将HTML字符串解析为html样式显示
<div dangerouslySetInnerHTML={{ __html: curriculumDesc }}></div>
- Hibernate进阶学习4
Hibernate进阶学习4 深入学习hibernate的查询语句 测试HQL查询 package com.hibernate.test; import com.hibernate.domain.Cu ...
- thinkphp 跳转外网代码(php通用)
thinkphp 提供了一个重定向但是在跳转外部网站的时候就会比较麻烦 下面一种方法还不错, < ?php //重定向浏览器 header("Location: http://www. ...
- 实用jquery插件
jquery toast 一个弹窗插件 jquery.form.min.js 一个Ajax表单插件
- [CodeForces940E]Cashback(set+DP)
Description Since you are the best Wraith King, Nizhniy Magazin «Mir» at the centre of Vinnytsia is ...
- 存在チェックのみする場合はcount(*)でOK
SELECT SINGLE COUNT(*) FROM T001 WHERE BUKRS = P_BUKRS. IF SY-SUBRC <> 0. ENDIF.
- [转] PHP在不同页面之间传值的三种常见方式
转自: http://my.oschina.net/jiec/blog/196153 一. POST传值 post传值是用于html的<form>表单跳转的方法,很方便使用.例如: < ...