Orcale 存储过程实践总结
由于项目中用到存储过程,这两天把存储过程方面的知识简单回顾了一下并分享给大家。
编写第一个存储过程
create or replace procedure ky_proc_in_out(para3 in out varchar2) as
v_name varchar2(20);
begin
v_name := 'kangyi';
para3 := v_name;
dbms_output.put_line('para3:' || para3);
end;
上述代码实现的功能是将传入参数设置为‘kangyi’,存储过程的定义大致分为三部分:
//1.定义存储过程名及参数
create or replace procedure ky_proc_in_out(para3 in out varchar2) as
//2.设置成员变量
begin
//3.存储过程实现代码
end;
传入的形参中要添加两个类型,一个是输入输出类型,一个是具体的数据类型,这里简单介绍一下输入输出类型:
IN:默认类型,只能作为传入参数,即在存储过程能不能对其进行赋值。
OUT:只能作为传出参数,如果将它作为传入参数看待,它在存储过程中如果不赋值,总为null。
IN OUT:可作为输入和输出参数。真正的引用传递参数,和平时JAVA中的形参差不多。
项目中编写的第一个存储过程
下面的存储过程主要解决的需求是查找出第二张表在第一张表中名称和ID都不存的数据条数
create or replace procedure proc_normalcount(p1 OUT varchar2) as
--定义一个游标用于得到符合查询条件的总数
cursor c_postype is
select COUNT(NAME)
from (select TAX_INFO_GD.NAME,
TAX_INFO.NSR,
TAX_INFO_GD.SH_ID,
TAX_INFO.SHXYDM,
TAX_INFO_GD.SYLX,
TAX_INFO_GD.JDXZ
FROM TAX_INFO_GD
LEFT JOIN TAX_INFO
ON TAX_INFO_GD.NAME = TAX_INFO.NSR
AND TAX_INFO_GD.SH_ID = TAX_INFO.SHXYDM)
where NSR is null
and SHXYDM is null
AND (SYLX = 1 OR SYLX = 3);
begin
--打开游标
open c_postype;
--取出总数赋值给输出参数p1
fetch c_postype
into p1;
--关闭游标
close c_postype;
end;
Orcale 存储过程实践总结的更多相关文章
- 项目中Orcale存储过程优化记录
今天对之前写的Orcale存储过程做了一些优化,使其变得更加灵活,之前写的存储过程是使用游标存储SQL执行结果,但是使用游标带来的弊端是,在声明时,它所执行的SQL就已经被写死,无法修改.若想更加灵活 ...
- Jfinal调用Orcale存储过程
因为项目需要,最近一直在学习Orcale存储过程,但发现在网上很少有人写Jave中Jfinal调用Orcale存储过程的文章,即使有也是几年前的,很多都不能用,今天给大家分享一段Jfinal调用Orc ...
- [C#对Oracle操作]C#操作调用Orcale存储过程有参数
/// <summary> /// 获取ERP固定资产计提数据 /// </summary> /// <param name="strCompanyCode&q ...
- orcale存储过程学习之路(一)
----------------------------------------- 建表 ------------------------------------------ create table ...
- MySQL存储过程实践
对employees数据库建立存储过程 创建不含有输入输出变量的存储过程 DELIMITER // -- 设定语句结束分隔符 DROP PROCEDURE IF EXISTS GetEmployees ...
- mysql存储过程实践总结
一:参数类型 1.IN 只能读取参数并在函数内部更改有效,不能持久化到外部变量 2.OUT 不能读取参数,可以在函数内部修改并保存到外部变量 3.INOUT 既能读取又能持久化 二:基本格式 mys ...
- orcale存储过程学习之路--存储过程实例(三)
--创建表 create table TESTTABLE( id1 VARCHAR2(12), name VARCHAR2(32))select t.id1,t.name from TESTTA ...
- orcale存储过程学习之路--创建空存储过程(二)
--创建表 create table TESTTABLE( id1 VARCHAR2(12), name VARCHAR2(32))select t.id1,t.name from TESTTA ...
- MySQL(9)---纪录一次实际开发过程中用到的复杂存储过程
Mysql(9)---纪录一次实际开发过程中用到的复杂存储过程 为了尽可能的还原当时为什么需要用到存储过程,下面我写了个详细的文档,我们可以从需求文档出发来分析. 有关存储过程之前也写了两篇文章来做铺 ...
随机推荐
- Android文本框-android学习之旅(十七 )
文本框简介 文本框属于基本的andoid控件,TextView继承了View是最基本的文本框,它的子类包括EditView和Button等,TextView的大部分方法,它的子类也可以使用. Text ...
- C++中struct类型增强
struct类型的加强: C语言的struct定义了一组变量的集合,C编译器并不认为这是一种新的类型. C++中的struct是一个新类型的定义声明. demo struct Student { ch ...
- EBS开发技术之Patch安装
Contents Document Control........................................................................ ...
- React Native移植原生Android
(一)前言 之前已经写过了有关React Native移植原生Android项目的文章,不过因为RN版本更新的原因吧,跟着以前的文章可能会出现一些问题,对于初学者来讲还是会有很多疑难的困惑的,而且官方 ...
- JSP连接MySQL时出现--错误:Access denied for user 'root'@'localhost' (using password: YES)'解决方案
用代码进行用户验证的时候总是出现这个错误,翻译一下,应该是root用户的是权限的问题没有放开. 那就想办法解决一下吧,具体的来说可以有这样的几种方式. 解决方法,首先想到的是先重启一下MySQL服务吧 ...
- python multiprocessing example
python multiprocessing example Server Code: #!/usr/bin/python #-*- coding: UTF-8 -*- # mpserver.py # ...
- HTTP请求方法
HTTP请求方法 根据HTTP标准,HTTP请求可以使用多种请求方法. HTTP1.0定义了三种请求方法: GET, POST 和 HEAD方法. HTTP1.1新增了五种请求方法:OPTIONS, ...
- Uva - 12174 - Shuffle
用滑动窗口的思想,用一个数组保存每个数在窗口中出现的次数.再用一个变量记录在窗口中恰好出现一次的的数的个数,这样可以枚举所有可能的答案,判断它所对应的所有串口,当且仅当所有的串口均满足要求时这个答案可 ...
- 分布式进阶(十三)Docker Container间实现数据共享
sudo docker run -it -v /usr/lib:/usr/lib/dbdata --name dbcontainer-192.168.1.184 ubuntu:14.04 sudo d ...
- 集群通信组件Tribes之整体介绍
接下来一系列文章会对集群通信框架tribes进行源码级别的分析,欢迎讨论. 把若干机器组合成一个集群,集群为了能协同工作,成员之间的通信是必不可少的,当然可以说这也是集群实现中重点需要解决的核心问题, ...