- 1、本文档共20页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验一 存储子程序
1、实验目的
①、掌握存储过程的概念,学会编写简单的存储过程及其使用。
②、了解存储过程调用。
2、实验性质
验证性实验
3、实验导读
3.1、PL/SQL基础知识
3.1.1、数据类型
PL/SQL有四种数据类型:标量类型、引用类型、复合类型和大对象类型。
(一)、标量类型。
标量类型只能存储单值的数据,其中:
存储字符/字符串的有CHAR, CHARACTER, LONG, LONG RAW, NCHAR, NVARCHAR2, RAW, ROWID, STRING, UROWID, VARCHAR, VARCHAR2。LONG和LONG RAW不推荐使用。
存储数字的有BINARY_DOUBLE, BINARY_FLOAT, BINARY_INTEGER, DEC, DECIMAL, DOUBLE PRECISION, FLOAT, INT, INTEGER, NATURAL, NATURALN, NUMBER,NUMERIC, PLS_INTEGER, POSITIVE, POSITIVEN, REAL, SIGNTYPE, SMALLINT。
存储布尔值的有BOOLEAN。
存储日期时间的有DATE、TIMESTAMP、TIMESTAMP WITH TIMEZONE、TIMESTAMP WITH LOCAL、INTERVAL。
存储二进制的有RAW、LONG RAW。
引用类型有REF CURSOR和REF。
大对象类型有BLOB、CLOB、BFILE。
(二)复合类型。
复合类型由标量类型复合而成,使用前需要定义。PL/SQL的复合类型有记录、集合和对象等。
记录类似结构体,其中的每一个成份称为域,域的数据类型可以是标量类型,也可以是记录类型。经常使用记录这种数据类型来处理数据表中的记录,用“变量名.域名”引用记录的域。可以在存储子程序的参数中使用记录类型,可以在函数的返回值中使用记录类型,可以把游标的当前行的数据用FETCH …INTO…取到一个记录型变量中,还可以使用 SQL语句INSERT INTO…VALUES把一个记录型变量的值插入到数据库中。记录的定义为:
CREATE TYPE type_name IS RECORD(field1,field2,…,fieldn);
注:如果要定义一个局部使用的数据类型,可以不加CREATE关键字。
每个域field的定义为:
field_name filed_data_type [[NOT NULL] {DEFAULT|:=} default_value]
例1:记录的定义与记录型变量的定义与使用。
DECLARE
TYPE DeptRecType IS RECORD(
deptid NUMBER(4) NOT NULL :=99,
dname departments.department_name%TYPE,
mgrid departments.manager_id%TYPE,
loc departments.location_id%TYPE
);
DepartRecord DeptRecType ;
BEGIN
DepartRecord.dname :=计算机工程系;
DepartRecord.deptid :=1000;
INSERT INTO departments VALUES DepartRecord;
DepartRecord.dname :=化学系;
UPDATE departments SET ROW = DepartRecord WHERE department_id= DepartRecord.deptid;
dbms_output.put_line(DepartRecord.deptid || || DepartRecord.dname);
COMMIT;
END;
注:表名%ROWTYPE和游标名%ROWTYPE返回的数据类型也为记录型
如果需要在一个结构中存储一系列相同类型的数据,就用PL/SQL的集合类型。
PL/SQL中集合类型分为:
①变长数组VARRAYS-能保存固定数量的元素(但可以在运行时改变它的大小),使用有序数字作为下标TYPE type_name ?IS?{VARRAY?|?VARYING?ARRAY}?(size_limit)?
OF???element_type ?[NOT?NULL];
②嵌套表-可容纳任意个数的元素,使用有序数字作下标TYPE?type_name?IS?TABLE?OF?elem
文档评论(0)