Oracle简单学习
最近一段时间重温了oracle关于存储过程和oracle包以及function中的定义, 先看一下要用的表:
devices(id number, name varchar2, age number)

groups(id number, devicesid number, name varchar2, content varchar2)

在oracle中建立如下的package和package bodies,

下面给出里面具体的内容:
首先是packges下面的devices_pkg内容:
定义三个function和一个procedure
CREATE OR REPLACE PACKAGE DEVICES_PKG
IS TYPE MY_RESULTSET_CURSOR IS REF CURSOR; FUNCTION fun_add_device(
dev_id NUMBER,
dev_name VARCHAR2,
dev_age NUMBER)
RETURN NUMBER; FUNCTION fun_delete_device(dev_id NUMBER)
RETURN NUMBER; FUNCTION fun_Get_Test_Main_All
RETURN MY_RESULTSET_CURSOR; PROCEDURE pro_select_device(dev_id NUMBER, RS out MY_RESULTSET_CURSOR); END DEVICES_PKG;
然后是packages bodies里面的内容:
这里面主要是对上面定义的function和procedure的实现定义,
有简单的返回, 还有游标类型的返回;
CREATE OR REPLACE PACKAGE BODY DEVICES_PKG
AS FUNCTION fun_add_device(dev_id NUMBER,
dev_name VARCHAR2,
dev_age NUMBER)
RETURN NUMBER
IS
BEGIN
INSERT INTO devices VALUES (dev_id, dev_name, dev_age);
IF SQL%FOUND THEN
RETURN 1;
ELSE
RETURN 0;
END IF;
END fun_add_device; FUNCTION fun_delete_device(dev_id NUMBER)
RETURN NUMBER
IS
BEGIN
DELETE FROM devices WHERE id = dev_id;
IF SQL%FOUND THEN
RETURN 1;
ELSE
RETURN 0;
END IF;
END fun_delete_device; FUNCTION fun_Get_Test_Main_All
RETURN MY_RESULTSET_CURSOR
IS
return_cursor MY_RESULTSET_CURSOR;
BEGIN
OPEN return_cursor FOR 'SELECT d.id,d.name,d.age FROM devices d ORDER BY d.id ASC';
RETURN return_cursor;
END; PROCEDURE pro_select_device(dev_id NUMBER, RS out MY_RESULTSET_CURSOR)
IS
testCursor MY_RESULTSET_CURSOR;
testRec devices%ROWTYPE;
v_sql_select VARCHAR2(500);
BEGIN
v_sql_select := 'select
d.name, d.age, g.content
from devices d, groups g
where d.id ='|| dev_id ||
' and d.id = g.devicesid';
OPEN RS FOR v_sql_select;
testCursor := fun_Get_Test_Main_All();
LOOP
FETCH testCursor INTO testRec;
EXIT WHEN testCursor%NOTFOUND;
DBMS_OUTPUT.put_line('id:'||testRec.Id||',name:'||testRec.Name||',age:'||testRec.Age);
END LOOP;
END; END DEVICES_PKG;
这里给出其中一个调用的过程:

测试devices_pkg.pro_select_device这个存储过程,
输入dev_id为3,
结果rs为:

然后看一下DBMS输出是什么:

Oracle简单学习的更多相关文章
- Oracle简单学习笔记
创建用户 CREATE USER username identified by password;//这是最简单的用户创建SQL语句. CREATE USER username identified ...
- Asp.Net MVC4 + Oracle + EasyUI 学习 序章
Asp.Net MVC4 + Oracle + EasyUI 序章 -- 新建微软实例 本文链接:http://www.cnblogs.com/likeli/p/4233387.html 1. 简 ...
- Oracle RAC学习笔记:基本概念及入门
Oracle RAC学习笔记:基本概念及入门 2010年04月19日 10:39 来源:书童的博客 作者:书童 编辑:晓熊 [技术开发 技术文章] oracle 10g real applica ...
- Oracle RAC学习笔记01-集群理论
Oracle RAC学习笔记01-集群理论 1.集群相关理论概述 2.Oracle Clusterware 3.Oracle RAC 原理 写在前面: 最近一直在看张晓明的大话Oracle RAC,真 ...
- Oracle RMAN 学习:恢复
Oracle RMAN 学习:恢复 6 rman恢复 Rman中的恢复对应restore,recover Restore,数据修复,利用备份集的数据文件来替换已损坏的数据文件或将其恢复到另外一个位置, ...
- Oracle Flushback 学习测试
Oracle Flushback 学习测试:三思笔记 Flashback恢复 从9i开始,利用oracle查询的多版本一致的特点,实现从回滚段中读取一定时间内在表中操作的数据,被称为 flashbac ...
- Oracle基础学习笔记
Oracle基础学习笔记 最近找到一份实习工作,有点头疼的是,有阶段性考核,这...,实际想想看,大学期间只学过数据库原理,并没有针对某一数据库管理系统而系统的学习,这正好是一个机会,于是乎用了三天时 ...
- Vagrant 安装Oracle19c RAC测试环境的简单学习
1. 学习自网站: https://xiaoyu.blog.csdn.net/article/details/103135158 简单学习了下 能够将oracle RAC开起来了 但是 对后期的维护和 ...
- 简单学习一下ibd数据文件解析
来源:原创投稿 作者:花家舍 简介:数据库技术爱好者. GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源. 简单学习一下数据文件解析 这是尝试使用Golang语言简单解析My ...
随机推荐
- HDU 6697 Closest Pair of Segments(线段距离)
首先最容易想到的就是N2暴力枚举所有线段去找最小值,但是这样会做了许多无用功.我们可以先对线段排序,使得线段最左侧的端点按照x轴y轴排序,然后我们可以限定在这个线段的矩形框内的所有线段才有可能产生最小 ...
- Java 异步编程
昨天头儿给的学习文档我还没看完,头儿说:“MongoDB光会简单的添删改查什么的不行,要深入了解,你们连$set和$inc使用场景都分不清.” 确实,学习过一年多SQL,确实对学习MongoDB有点影 ...
- redis 安装和运行
安装redis 在CentOs虚拟机上:yum install redis,可能会出现以下错误: 解决方式:先输入yum install epel-release,之后输入:redis-server启 ...
- 01-HTML控件
1.HTML (常用标签 网页的基本结构)2.CSS (常用样式 网页的显示效果)3.JavaScript (用户交互效果 动态效果)4.jQuery (JavaScript库 简化原生js操作)5. ...
- windwos下nginx 配置https并http强制跳转https
windwos下nginx 配置https并http强制跳转https 一.首先配置证书文件 申请证书文件,这里就不做详细过程了,直接看证书文件结果. 这是两个证书的关键文件 打开ngxin下con ...
- java操作mongodb工具类
新建maven项目 pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="ht ...
- noscript
<noscript> <article id="noscript" class="error info_panel"> <head ...
- 银联银行卡查询服务-dubbo实现
最近看到银联开放了一个银行卡查询的服务,具体内容见官网https://open.unionpay.com/tjweb/api/detail?apiSvcId=51 尝尝鲜 在文档下载目录下,下载upa ...
- docker技术基础
1 Linux Namespace Linux Namespaces机制提供一种资源隔离方案.PID,IPC,Network等系统资源不再是全局性的,而是属于特定的Namespace.每个Namesp ...
- SpringCLoud之搭建Zuul网关集群
1.使用技术 Springboot,SpringCloud,Zuul,Nignx 2.目的 使用Zuul搭建微服务高可用的网关 3.项目创建 3.1 创建注册中心(略) 3.2 创建一个hello-s ...