PL/SQL七复合数据结构
DECLARE
TYPE stock_quote_rec IS RECORD
(symbol stock.symbol %TYPE,
bid NUMBER(10, 4),
ask NUMBER(10, 4),
volumn NUMBER NOT NULL:=0,
exchange VARCHAR2(6) DEFAULT 'NASDAQ'
);
real_time_quote stock_quote_rec;
variable
CURSOR xactions_cur(acct_no IN VARCHAR2) IS
SELECT action, timestamp, holding
FROM portfolios
WHERE account_nbr = 'acct_no';xaction_info xactions_cur%ROWTYPE;
variableDECLARE
CURSOR xactionS_cur IS
SELECT action, timestamp, holding
FROM portfolios
WHERE account_nbr = '37';BEGIN
FOR xaction_rec in xactions_cur
LOOP
IF xaction_rec.holding = 'orcl'
THEN
notify_shareholder;
END IF
END LOOP;
END
DECLARE
TYPE stock_quote_rec IS RECORD(
symbol stock.symbol%TYPE,
bid NUMBER(10, 4),
ask NUMBER(10, 4),
volumn NUMBER NOT NULL := 0,
exchange VARCHAR2(6) DEFAULT 'NASDQA'
);TYPE detailed_quote_rec IS RECORD(
quote stock_quote_rec,
timestamp DATE,
bid_size NUMBER,
ask_size NUMBER,
last_tick VARCHAR2(4)
);real_time_detail detail_quote_rec;BEGIN
real_time_detail.bin_size:=1000;
real_time_detail.quote.volumn:=156700;
log_quote(real_time_detail.quote);
DECLARE
stock_info1 stocks%ROWTYPE;
stock_info2 stocks%ROWTYPE;
BEGIN
SELECT symbol, exchange
INTO stock_info1.symbol, stock_info1.exchange
FROM stocks
WHERE symbol = 'ORCL';SELECT * INTO stock_info2 FROM stocks
WHERE symbol = 'ORCL';
END
DECLARE
CURSOR stock_cur(symbol_in VARCHAR2) IS
SELECT symbol, exchange, begin_date
FROM stock
WHERE symbol = UPPER(symbol_in);stock_info stock_cur%ROWTYPEBEGIN
OPEN stock_cur('ORCL');
FETCH stock_cur INTO stock_info;
DECLARE
TYPE stock_quote_rec IS RECORD(
symbol stocks.symbols%TYPE,
bid NUMBER(10, 4),
ask NUMBER(10, 4),
volumn NUMBER
);
TYPE stock_quote_too IS RECORD(
symbol stocks.symbols%TYPE,
bid NUMBER(10, 4),
ask NUMBER(10, 4),
volumn NUMBER
);
stock_one stocks_quote_rec;
stock_two stocks_quote_rec;stock_also stock_rec_too;BEGIN
stock_one.symbol:='orcl';
stock_one.volumn:=12334400;
stock_two:=stock_one; // correct
stock_also:=stock_one; // incorrect, the data type is wrong
stock_also.symbol:=stock_one.symbol;
stock_also.volumn:=stock_one.volumn;
END
DECLARE
TYPE symbol_tab_typ IS TABLE OF VARCHAR2(5) INDEX BY BINARY_INTEGER;
symbol_tab symbol_tab_typ;
BEGIN
DECLARE
TYPE symbol_tab_typ IS TABLE OF VARCHAR2(5) INDEX BY BINARY_INTEGER;
TYPE account_tab_typ IS TABLE OF accounts%ROWTYPE INDEX BY BINARY_INTEGER;
symbol_tab symbol_tab_typ;
account_tab account_tab_typ;
new_acct_tab account_tab_typ;
BEGIN
SELECT * INTO account_tab(147) FROM accounts WHERE account_nbr = 147;
SELECT * INTO account_tab(-3) FROM accounts WHERE account_nbr = 3003;
IF account_tab(147).balance < 500 THEN
change_maintenance_fee(147);
END IF
new_acct_tab:=account_tab;
symbol_tab(1):='ORCL';
symbol_tab(2):='CSCO';
symbol_tab(3):='SUN';publish_portfolio(symbol_tab);
DECLARE
TYPE stock_list IS TABLE OF stock.symbol%TYPE;
TYPE top10_list IS VARRAY(10) OF stock.symbol%TYPE;
biotech_stocks stock_list;
tech_10 top10_list;BEGIN
biotech_stocks(1):='AMGN'; // this is illegal, becuase biotech_stocks do not been initialize
IF biotech_stocks IS NULL THEN
biotech_stocks:=('AMGN', 'BGEN', 'IMCL', 'GERN', 'CAR');
END IF;tech_10:=top10_list('ORCL', 'CSCO', 'MSFT', 'INTC', 'SUNW', 'IBM', NULL, NULL);
IF tech_10(7) IS NULL THEN
tech_10(7):='CPQ';
END IF
tech_10(8):='DELL';
END
DECLARE
TYPE stock_quote_rec IS RECORD(
symbol stock.symbol%TYPE,
bid NUMBER(10, 4),
ask NUMBER(10, 4),
volumn NUMBER NOT NULL:=0
);
TYPE stock_tab_typ IS TABLE OF stock_quote_rec;
quote_list stock_tab_typ;
single_quote stock_quote_rec;BEGIN
single_quote.symbol:='OPCL';
single_quote.bid:=100;
single_quote.ask:=101;
single_quote.volumn:=230000;
quote_list:=stock_tab_typ(single_quote); // legal
quote_list:=stock_tab_typ('CSCO', 43, 323, 323000); // illegal
DBMS_OUTPUT.LINE(quote_list(1).bid);
END
方法
|
描述
|
使用限制
|
COUNT
|
返回集合中元素的个数
|
|
DELETE
|
删除集合中所有元素
|
|
DELETE()
|
删除元素下标为x的元素,如果x为null,则集合保持不变
|
对VARRAY非法
|
DELETE(,)
|
删除元素下标从X到Y的元素,如果X>Y集合保持不变
|
对VARRAY非法
|
EXIST()
|
如果集合元素x已经初始化,则返回TRUE, 否则返回FALSE
|
|
EXTEND
|
在集合末尾添加一个元素
|
对Index_by非法
|
EXTEND()
|
在集合末尾添加x个元素
|
对Index_by非法
|
EXTEND(,)
|
在集合末尾添加元素n的x个副本
|
对Index_by非法
|
FIRST
|
返回集合中的第一个元素的下标号,对于VARRAY集合始终返回1。
|
|
LAST
|
返回集合中最后一个元素的下标号, 对于VARRAY返回值始终等于COUNT.
|
|
LIMIT
|
返回VARRY集合的最大的元素个数,对于嵌套表和对于嵌套表和Index_by为null
|
Index_by集合无用
|
NEXT()
|
返回在元素x之后及紧挨着它的元素的值,如果该元素是最后一个元素,则返回null.
|
|
PRIOR()
|
返回集合中在元素x之前紧挨着它的元素的值,如果该元素是第一个元素,则返回null。
|
|
TRIM
|
从集合末端开始删除一个元素
|
对于index_by不合法
|
TRIM()
|
从集合末端开始删除x个元素
|
对index_by不合法
|
IF stock_list > stock_list2 --非法
IF sort_collection(stock_list1) > sort_collection(stock_list2) THEN --合法
转载于:https://www.cnblogs.com/garinzhang/archive/2012/06/27/2566511.html
PL/SQL七复合数据结构相关推荐
- 全面探讨PL/SQL的复合数据类型
http://www.yesky.com/20020819/1625866.shtml
- Oracle PL/SQL语言初级教程(自学)
Oracle PL/SQL语言初级教程 PL/SQL 语言基础 PL/SQL 是一种高性能的基于事务处理的语言,能运行在任何 ORACLE 环境中,支持所有数据处理命令. 通过使用 PL/SQL 程序 ...
- Oracle PL/SQL 程序设计读书笔记 - 第7章 使用数据
Oracle PL/SQL 程序设计读书笔记 - 第7章 使用数据 Oracle PL/SQL 程序设计读书笔记 - 第7章 使用数据 7.1 程序数据的命名 PL/SQL要求在给数据结构命名的时候应 ...
- Oracle PL/SQL基础知识
Oracle PL/SQL基础知识 过程(存储过程) 过程用于执行特定的操作,当建立过程时,既可以指定输入参数(in),也可以指定输出参数(out).通过在过程中使用输入参数,可以将数据传递到执行部分 ...
- PL/SQL编程1-基础
编写第一个存储过程 create or replace procedure test_pro1 is begininsert into test1 values('01','zydev');end;/ ...
- oracle学习总结2(pl/sql 游标 异常的处理 存储过程和函数 包 触发器)
pl/sql的学习 给sql添加了逻辑判断与流程控制的功能 语法: declare begin exception end; 运算符 重要的就是赋值运算符了:= 连接 || ...
- PL/SQL复合变量
复合变量可以将不同数据类型的多个值存储在一个单元中.由于复合类型可以由用户自己根据需要定义其结构,所以复合数据类型也称为自定义数据类型. 在PL/SQL中,使用%TYPE声明的变量类型与数据表中字段的 ...
- 第七章 控制PL/SQL错误
一.错误控制一览 在PL/SQL中,警告或错误被称为异常.异常可以是内部(运行时系统)定义的或是用户定义的.内部定义的案例包括除零操作和内存溢出等.一些常见的内部异常都有一个预定义的名字,如ZERO_ ...
- PL/SQL复合数据类型
--一.PL/SQL复合数据类型 --(一).PL/SQL记录 --1.定义PL/SQL记录 --(1).定义PL/SQL记录 --Grammar TYPE type_name IS RECORD(f ...
最新文章
- Android使用ViewPager实现左右循环滑动及轮播效果
- 苹果电脑如何删除软件_软件开发公司误将委托人系统数据删除,责任如何认定?...
- C/C++运行时库 解释
- 运行Qt release版本时出现“丢失QtCore4.dll”错误
- seaborn.FacetGrid
- “退学吧,开始行动”——埃里森在耶鲁的演讲(历史上最牛的演讲)
- 面试官:Java为什么只有值传递?
- 架设流媒体服务器[转]
- git更新pull报错Pulling 1 repository Remote does not have refs/heads/rel5.1 available for fetch
- 虾米回应“关闭”消息:不予置评;明年 Win 10 或将原生运行安卓应用;Perl 项目治理新规| 极客头条...
- string-indexOf、substring、split
- MySQL解压缩版配置安装详解【图解】
- 解决TortoiseGit文件夹和文件状态图标不显示问题
- 人脸识别及数据流处理
- java倒计时器_Java并发系列5--倒计时器CountDownLatch
- Modern C++ JSON nlohmann::json 使用详解
- 蓝桥杯计算机软件大赛什么时间,“蓝桥杯”全国软件设计大赛
- 早间简评:黄金亚盘快速下跌 1300关口岌岌可危?
- 2021年中国5G手机发展现状及市场竞争格局分析:华为持续领跑国内5G手机市场[图]
- 解决U盘受保护(适用于U盘或移动硬盘)-亲测有效