oracle 10g sql/plsql编程基础,《精通Oracle10gPLSQL编程》3、PL/SQL基础

本文详细介绍了PL/SQL的基本程序单元——块,包括匿名块、命名块、子程序和触发器。同时深入讲解了标量、复合、参照和LOB类型的变量定义与使用,如%TYPE属性、PL/SQL记录、PL/SQL表、嵌套表和VARRAY。通过实例展示了如何操作这些数据类型,以及游标变量和对象类型变量的应用。
摘要由CSDN通过智能技术生成

块(Block)是PL/SQL的基本程序单元。

PL/SQL块基本结构:

DECLARE

/* 定义部分 */

BEGIN

/* 执行部分 */

EXCEPTION

/* 例外处理部分 */

END;/* 块结束标记 */块分类:匿名块、命名块(<<>>)、子程序(过程、函数、包)、触发器

---------------------------------------------------------------------------------------------------------

定义并使用变量

a.标量(Scalar)类型、

aaa number(10);

bbb constant number(3,2) := 0.01;

ccc varchar2(20) default 'ccc';当定义PL/SQL变量存放列值时,必须确保变量使用合适的数据类型和长度,否则可能出错。为了避免错误,可以使用%TYPE属性定义变量,使用%TYPE定义变量时,会按照数据库列或其他变量来确定新变量的类型及长度。

v_ename emp.ename%TYPE;

v_sal emp.sal%TYPE;

v_sal2 v_sal%TYPE;b.复合(Composite)类型、

复合变量是用于存放多个值得变量。PL/SQL包括PL/SQL记录、PL/SQL表、嵌套表、VARRAY等四种复合数据类型。

PL/SQL记录:类似高级语言中的结构

create table emp(

id number(10),

ename varchar2(20),

etitle varchar2(20)

);

insert into emp values (1,'aaa','a_title');

DECLARE

TYPE emp_record_type IS RECORD(

v_name emp.ename%TYPE,

v_title emp.etitle%TYPE

);

emp_record emp_record_type;

BEGIN

select ename,etitle into emp_record from emp where id = 1;

dbms_output.put_line('name : ' || emp_record.v_name);

END;PL/SQL表:类似高级语言中的数组

DECLARE

TYPE ename_table_type IS TABLE OF emp.ename%TYPE

INDEX BY BINARY_INTEGER;

ename_table ename_table_type;

BEGIN

select ename into ename_table(0) from emp where id = 1;

dbms_output.put_line('name : ' || ename_table(0));

END;嵌套表(Nested Table):类似高级语言中的数组

CREATE OR REPLACE TYPE emp_type AS OBJECT(

name varchar2(20),title varchar2(20)

);

CREATE OR REPLACE TYPE emp_array IS TABLE OF emp_type;对象emp_type用于存储emp信息,而emp_array是基于emp_type的嵌套表类型,可以用于存储多个雇员信息。

VARRAY(变长数组):类似嵌套表,但是元素个数有限制。

CREATE OR REPLACE TYPE emp_type AS OBJECT(

name varchar2(20),title varchar2(20)

);

CREATE OR REPLACE TYPE emp_array IS VARRAY(20) OF emp_type;

c.参照(Reference)类型、

参照变量是用于存放数值指针的变量。可使用参照变量使得应用程序共享相同对象,降低占用空间。

游标变量(REF CURSOR)

declare

type c1 is ref cursor;

emp_cursor c1;

v_ename emp.ename%TYPE;

v_title emp.etitle%TYPE;

begin

open emp_cursor for select ename,etitle from emp where id = 1;

loop

fetch emp_cursor into v_ename,v_title;

exit when emp_cursor%notfound;

dbms_output.put_line(v_ename);

end loop;

end;

对象类型变量(REF obj_type)

d.LOB(Large Object)类型

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于oracle技术人员而言,怎么强调掌握pl/sql的重要性都不过分。但是,真正精通pl/sql绝非易事。事实上,在现有的oracle应用程序中充斥着太多质量不佳的pl/sql代码,它们要么没有充分利用oracle特有的功能,要么是在误用或者滥用。这种现象导致了许多对pl/sql本身能力不公正的批评。.    本书由全球oracle技术专家组织oaktable network的多位大师联手编写,是为pl/sql正名的名著。与市面上许多pl/sql图书只是纸上谈兵、局限于语法和功能本身不同,本书从实战出发,讲述如何正确、充分地运用语言特性,除了pl/sql的基本功能之外,也包括数据的高效处理、安全、触发器、高效的调试技术等。作者在讲解每一个特性 时都辅以经过实战检验的示例,更与读者分享了大量多年积累的独家经验。有本书在手,你将学会如何充分发挥pl/sql的巨大潜能,编写出可靠、高效且易于 维护的一流程序。... 作译者   Connor McDonald 世界著名的Oracle技术专家,Oracle认证专家,具有十多年的Oracle系统开发经验,以精深的PL/SQL造诣享誉业界。他的个人网站www.oracledba.co.uk是极具影响的Oracle技术资源。.   Chaim Katz Oracle认证专家,擅长数据库管理和PL/SQL开发,为各种Oracle技术期刊写过大量文章。   Christopher Beck Oracle公司资深技术专家,专攻核心数据库技术和Web应用开发。除本书外,他还与Joel R. Kallman和Tom Kyte等人合著了畅销书Beginning Oracle Programming。..   Joel R. Kallman Oracle公司软件开发总监.   David C. Knox 世界著名的Oracle安全专家,Oracle公司SolutioncEngineering集团的高级总监....
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值