Oracle学习(九)存过、游标、RECORD整合
一、代码
/*1.定义存过*/
CREATE OR REPLACE
PROCEDURE PRO_RE_USER_ORD_GOODS(
--NOW_DATE格式:YYYYMMDD 如:20190801(此时统计的是2019年7月31日的数据)
NOW_DATE IN VARCHAR2
)
IS /*2.定义变量 START*/
--定义RECORD型记录类型;
TYPE T_RECORD IS RECORD (
GOODS_CODE VARCHAR2 (64),
GOODS_NAME VARCHAR2 (64)
) ;
--定义返回结果集接收的变量,类型为T_RECORD;
PS:这里也可以不用record,直接指定V_ROWRESUT为%rowtype类型
V_ROWRESUT T_RECORD ;
--定义主键
PID VARCHAR2 (256) ;
/*2.定义变量 end*/ /*3.定义游标,执行查询结果集操作 START*/
CURSOR CUR_RE_USER_ORD_GOODS
IS
--查询语句开始
SELECT
A .GOODS_CODE,
B.GOODS_NAME
FROM
(
SELECT
ORD.GOODS_CODE
FROM
ORDER_INFO ORD
GROUP BY
ORD.GOODS_CODE
) A
LEFT JOIN GOODS_INFO B ON A .GOODS_CODE = B.GOODS_CODE ;
--查询语句结束
/*3.定义游标,执行查询结果集操作 END*/ /*4.打开并循环游标,进行数据操作 START*/
BEGIN
OPEN CUR_RE_USER_ORD_GOODS; --打开游标;
LOOP --开始执行循环,遍历查询结果集表;
FETCH CUR_RE_USER_ORD_GOODS INTO V_ROWRESUT; --循环游标并赋值给结构体变量;
EXIT WHEN CUR_RE_USER_ORD_GOODS %NOTFOUND; --如果游标遍历完成,就退出循环; --获取 UUID 并赋值给 PID 变量;
SELECT SYS_GUID() INTO PID FROM DUAL; --插入“订购商品记录表” 开始
INSERT INTO RE_USER_ORD_GOODS (
ID,
GOODS_CODE,
GOODS_NAME,
CREATE_TIME
)VALUES(
PID,
V_ROWRESUT.GOODS_CODE,
V_ROWRESUT.GOODS_NAME,
SYSDATE
);
--插入“订购商品记录表” 结束 END LOOP; --结束循环;
CLOSE CUR_RE_USER_ORD_GOODS; --关闭游标;
COMMIT; --提交 INSERT 操作;
END;
/*4.打开并循环游标,进行数据操作 END*/
oracle存储过程中is和as区别
- 在存储过程(PROCEDURE)和函数(FUNCTION)中没有区别;
- 在视图(VIEW)中只能用AS不能用IS;
- 在游标(CURSOR)中只能用IS不能用AS。
声明变量的方式
- v_temp varchar(10)
- v_temp tablename.property%type(表名属性名%type,指的是一个表中某个字段的类型,这样可以灵活使用)
- v_stu student%rowtype;(这种类型就是定义一个变量,这个变量的类型为一个表数据的行类型,用于接收查询的一整行数据)
赋值方式
- :=
Oracle学习(九)存过、游标、RECORD整合的更多相关文章
- oracle学习 九 游标的使用(持续更)
为什么要使用? 笔者查阅了一些资料之后得到的结论是, 关系型数据库是面向集合的,而游标是面向行的,游标可对取出来的集合(结果集)中每一行进行相同或不同的操作,还提供对基于游标位置而对表中数据进行删除或 ...
- Oracle学习(七)游标
一.简介 定义 实质上是数据集,类似数组一样,把查询的数据集存储在内存当中. 使用时可以通过游标指向其中一条记录,也可以通过循环游标达到循环数据集的目的. 游标的种类 显式游标: 使用之前必须得先声明 ...
- oracle 学习(四)游标
显式游标 隐式游标:如果在PL/SQL程序段中使用SELECT语句进行操作,PL/SQL 会隐含的处理游标定义,即为隐式游标.这种游标不需要像显式那样声明,也不必打开关闭. CREATE OR REP ...
- oracle学习--循环语句
oracle学习--循环语句 loop循环: create or replace procedure pro_test_loop is i number; begin i:=0; loop i:=i ...
- oracle中表空间管理,游标
一.表空间 oracle使用表空间来管理数据库的对象(表,序列,过程,函数,游标等). oracle的逻辑结构(看不见的):oracle数据库 => 表空间 => 表 序列 过程等对象. ...
- Oracle学习笔记三 SQL命令
SQL简介 SQL 支持下列类别的命令: 1.数据定义语言(DDL) 2.数据操纵语言(DML) 3.事务控制语言(TCL) 4.数据控制语言(DCL)
- Oracle学习线路
出自huyangg的博客,地址是:oracle学习路线图 1.sql.pl/sql(网上有很多的视频,可以做一个简单的入手,然后看几本书,多做实验) 作为oracle的基本功,需要大家对sql和 ...
- Oracle学习指南
Oracle学习指南 你走的那天,我决定不落泪,迎着风撑着眼帘用力不眨眼 创建数据库.创建用户.创建表空间.创建表.插入数据..... 1.用系统用户登录,任选系统用户 代码: >>sql ...
- Oracle学习系列1-7
Oracle学习系列1 两个服务必须启动: OracleOraDb10g*TNListener 和 OracleService*** 使用sqlplusw先进行环境的设置 set linesize 3 ...
- Oracle学习系列7
Oracle学习系列7 ************************************************************************************ 关联表 ...
随机推荐
- 使用dd命令快速生成大文件或者小文件
使用dd命令快速生成大文件或者小文件 需求场景: 在程序的测试中有些场景需要大量的小文件或者几个比较大的文件,而在我们的文件系统里一时无法找到那么多或者那么大的文件,此时linux的dd命令就能快速的 ...
- ISO8601
日期和时间的组合表示法 合并表示时,要在时间前面加一大写字母T,如要表示东八区时间2004年5月3日下午5点30分8秒,可以写成2004-05-03T17:30:08+08:00或20040503T1 ...
- MPI计算π
MPI计算\(\pi\) 利用公式 \[\int_0^1 \frac{4}{1+x^2}dx = \pi \] #include<stdio.h> #include<mpi.h> ...
- DVWA之文件上传(一)
实验环境为三台虚拟机,网络互通,分别是: 1.kali,IP为192.168.230.131 2.win10,IP为192.168.230.142 3.server 2019,IP为192.168.2 ...
- php 正则表达式匹配(持续更新)
正则表达式匹配网址: <?php header('Content-type:text/html;charset=utf-8'); $str = ' 百度http://www.baidu.com网 ...
- Selenium中核心属性以及方法
一.操作定位元素 selenium提供了定位元素的API,这些方法都被定义在webDriver类中,需要以find开头, 例如:find_Element_by_id('')
- 工作不到一年,做出了100k系统,老板给我升职加薪
看了下自己上一次发技术文还是在6月15日,算了算也是两个来月了.别怕,短暂的离开,是为了更好的相遇. 来到新公司以后啊,发现公司的搜索业务是真的太多了,大大小小有几百个搜索业务.来了之后得先梳理.熟悉 ...
- Spring Boot 如何快速集成 Redis 哨兵?
上一篇:Spring Boot 如何快速集成 Redis? 前面的分享栈长介绍了如何使用 Spring Boot 快速集成 Redis,上一篇是单机版,也有粉丝留言说有没有 Redis Sentine ...
- 虚拟机VmWare打开报错,错误提示:VMware Authorization Service is not running!
作者:程序员小冰,CSDN博客:http://blog.csdn.net/qq_21376985 QQ986945193 微博:http://weibo.com/mcxiaobing 说明:打开我的虚 ...
- Linux命令使用教程
Linux 内核最初只是由芬兰人林纳斯·托瓦兹(Linus Torvalds)在赫尔辛基大学上学时出于个人爱好而编写的. Linux 的发行版说简单点就是将 Linux 内核与应用软件做一个打包. 目 ...