PLSQL基础入门教程必看Word格式.docx

上传人:b****1 文档编号:4436086 上传时间:2023-05-03 格式:DOCX 页数:84 大小:54.76KB
下载 相关 举报
PLSQL基础入门教程必看Word格式.docx_第1页
第1页 / 共84页
PLSQL基础入门教程必看Word格式.docx_第2页
第2页 / 共84页
PLSQL基础入门教程必看Word格式.docx_第3页
第3页 / 共84页
PLSQL基础入门教程必看Word格式.docx_第4页
第4页 / 共84页
PLSQL基础入门教程必看Word格式.docx_第5页
第5页 / 共84页
PLSQL基础入门教程必看Word格式.docx_第6页
第6页 / 共84页
PLSQL基础入门教程必看Word格式.docx_第7页
第7页 / 共84页
PLSQL基础入门教程必看Word格式.docx_第8页
第8页 / 共84页
PLSQL基础入门教程必看Word格式.docx_第9页
第9页 / 共84页
PLSQL基础入门教程必看Word格式.docx_第10页
第10页 / 共84页
PLSQL基础入门教程必看Word格式.docx_第11页
第11页 / 共84页
PLSQL基础入门教程必看Word格式.docx_第12页
第12页 / 共84页
PLSQL基础入门教程必看Word格式.docx_第13页
第13页 / 共84页
PLSQL基础入门教程必看Word格式.docx_第14页
第14页 / 共84页
PLSQL基础入门教程必看Word格式.docx_第15页
第15页 / 共84页
PLSQL基础入门教程必看Word格式.docx_第16页
第16页 / 共84页
PLSQL基础入门教程必看Word格式.docx_第17页
第17页 / 共84页
PLSQL基础入门教程必看Word格式.docx_第18页
第18页 / 共84页
PLSQL基础入门教程必看Word格式.docx_第19页
第19页 / 共84页
PLSQL基础入门教程必看Word格式.docx_第20页
第20页 / 共84页
亲,该文档总共84页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

PLSQL基础入门教程必看Word格式.docx

《PLSQL基础入门教程必看Word格式.docx》由会员分享,可在线阅读,更多相关《PLSQL基础入门教程必看Word格式.docx(84页珍藏版)》请在冰点文库上搜索。

PLSQL基础入门教程必看Word格式.docx

如果使用PL/SQL进行编程,将这种具有大量数据处理的应用放在服务器端来执行。

自然就省去了数据在网上的传输时间。

1.2.1.2适合于客户环境

PL/SQL由于分为数据库PL/SQL部分和工具PL/SQL。

对于客户端来说,PL/SQL可以嵌套到相应的工具中,客户端程序可以执行本地包含PL/SQL部分,也可以向服务发SQL命令或激活服务器端的PL/SQL程序运行。

1.2.2PL/SQL可用的SQL语句

PL/SQL是ORACLE系统的核心语言,现在ORACLE的许多部件都是由PL/SQL写成。

在PL/SQL中可以使用的SQL语句有:

INSERT,UPDATE,DELETE,SELECTINTO,COMMIT,ROLLBACK,SAVEPOINT。

提示:

在PL/SQL中只能用SQL语句中的DML部分,不能用DDL部分,如果要在PL/SQL中使用DDL(如CREATEtable等)的话,只能以动态的方式来使用。

●ORACLE的PL/SQL组件在对PL/SQL程序进行解释时,同时对在其所使用的表名、列名及数据类型进行检查。

●PL/SQL可以在SQL*PLUS中使用。

●PL/SQL可以在高级语言中使用。

●PL/SQL可以在ORACLE的开发工具中使用。

●其它开发工具也可以调用PL/SQL编写的过程和函数,如PowerBuilder等都可以调用服务器端的PL/SQL过程。

1.3运行PL/SQL程序

PL/SQL程序的运行是通过ORACLE中的一个引擎来进行的。

这个引擎可能在ORACLE的服务器端,也可能在ORACLE应用开发的客户端。

引擎执行PL/SQL中的过程性语句,然后将SQL语句发送给数据库服务器来执行。

再将结果返回给执行端。

第二章PL/SQL块结构和组成元素

2.1PL/SQL块

PL/SQL程序由三个块组成,即声明部分、执行部分、异常处理部分。

PL/SQL块的结构如下:

DECLARE

/*声明部分:

在此声明PL/SQL用到的变量,类型及游标,以及局部的存储过程和函数*/

BEGIN

/*执行部分:

过程及SQL语句,即程序的主要部分*/

EXCEPTION

/*执行异常部分:

错误处理*/

END;

其中执行部分是必须的。

PL/SQL块可以分为三类:

1.无名块:

动态构造,只能执行一次。

2.子程序:

存储在数据库中的存储过程、函数及包等。

当在数据库上建立好后可以在其它程序中调用它们。

3.触发器:

当数据库发生操作时,会触发一些事件,从而自动执行相应的程序。

2.2PL/SQL结构

●PL/SQL块中可以包含子块;

●子块可以位于PL/SQL中的任何部分;

●子块也即PL/SQL中的一条命令;

2.3标识符

PL/SQL程序设计中的标识符定义与SQL的标识符定义的要求相同。

要求和限制有:

●标识符名不能超过30字符;

●第一个字符必须为字母;

●不分大小写;

●不能用’-‘(减号);

●不能是SQL保留字。

提示:

一般不要把变量名声明与表中字段名完全一样,如果这样可能得到不正确的结果.

例如:

下面的例子将会删除所有的纪录,而不是KING的记录;

DECLARE

Enamevarchar2(20):

=’KING’;

DELETEFROMempWHEREename=ename;

变量命名在PL/SQL中有特别的讲究,建议在系统的设计阶段就要求所有编程人员共同遵守一定的要求,使得整个系统的文档在规范上达到要求。

下面是建议的命名方法:

标识符

命名规则

例子

程序变量

V_name

程序常量

C_Name

C_company_name

游标变量

Name_cursor

Emp_cursor

异常标识

E_name

E_too_many

表类型

Name_table_type

Emp_record_type

Name_table

Emp

记录类型

Name_record

Emp_record

SQL*Plus替代变量

P_name

P_sal

绑定变量

G_name

G_year_sal

2.4PL/SQL变量类型

在前面的介绍中,有系统的数据类型,也可以自定义数据类型。

下表是ORACLE类型和PL/SQL中的变量类型的合法使用列表:

2.4.1变量类型

在ORACLE8i中可以使用的变量类型有:

类型

子类

说明

范围

ORACLE限制

CHAR

Character

String

Rowid

Nchar

定长字符串

民族语言字符集

032767

可选,确省=1

2000

VARCHAR2

Varchar,String

NVARCHAR2

可变字符串

4000

BINARY_INTEGER

带符号整数,为整数计算优化性能

NUMBER(p,s)

Dec

Doubleprecision

Integer

Int

Numeric

Real

Smallint

小数,NUMBER的子类型

高精度实数

整数,NUMBER的子类型

与NUMBER等价

整数,比integer小

LONG

变长字符串

0->

2147483647

32,767字节

DATE

日期型

公元前4712年1月1日至公元后4712年12月31日

BOOLEAN

布尔型

TRUE,FALSE,NULL

不使用

ROWID

存放数据库行号

UROWID

通用行标识符,字符类型

例1.插入一条记录并显示;

Row_idUROWID;

infoVARCHAR2(40);

INSERTINTOdeptVALUES(90,‘SERVICE’,‘BEIJING’)

RETURNINGrowid,dname||’:

’||to_char(deptno)||’:

’||loc

INTOrow_id,info;

DBMS_OUTPUT.PUT_LINE(‘ROWID:

’||row_id);

DBMS_OUTPUT.PUT_LINE(info);

其中:

RETURNING子句用于检索INSERT语句中所影响的数据行数,当INSERT语句使用VALUES子句插入数据时,RETURNING字句还可将列表达式、ROWID和REF值返回到输出变量中。

在使用RETURNING子句是应注意以下几点限制:

1.不能并行DML语句和远程对象一起使用;

2.不能检索LONG类型信息;

3.当通过视图向基表中插入数据时,只能与单基表视图一起使用。

例2.修改一条记录并显示

UPDATEdeptSETdeptno=80WHEREDNAME=‘SERVICE’

RETURNING子句用于检索被修改行信息:

当UPDATE语句修改单行数据时,RETURNING子句可以检索被修改行的ROWID和REF值,以及行中被修改列的列表达式,并可将他们存储到PL/SQL变量或复合变量中;

当UPDATE语句修改多行数据时,RETURNING子句可以将被修改行的ROWID和REF值,以及列表达式值返回到复合变量数组中。

在UPDATE中使用RETURNING子句的限制与INSERT语句中对RETURNING子句的限制相同。

例3.删除一条记录并显示

DELETEdeptWHEREDNAME=‘SERVICE’

2.4.2复合类型

ORACLE在PL/SQL中除了提供象前面介绍的各种类型外,还提供一种称为复合类型的类型---记录和表.

2.4.2.1记录类型

记录类型是把逻辑相关的数据作为一个单元存储起来,它必须包括至少一个标量型或RECORD数据类型的成员,称作PL/SQLRECORD的域(FIELD),其作用是存放互不相同但逻辑相关的信息。

定义记录类型语法如下:

TYPErecord_typeISRECORD(

Field1type1[NOTNULL][:

=exp1],

Field2type2[NOTNULL][:

=exp2],

......

Fieldntypen[NOTNULL][:

=expn]);

例4:

TYPEtest_recISRECORD(

CodeVARCHAR2(10),

NameVARCHAR2(30)NOTNULL:

=’abook’);

V_booktest_rec;

V_book.code:

=’123’;

V_book.name:

=’C++Programming’;

DBMS_OUTPUT.PUT_LINE(v_book.code||v_book.name);

可以用SELECT语句对记录变量进行赋值,只要保证记录字段与查询结果列表中的字段相配即可。

2.4.2.2使用%TYPE

定义一个变量,其数据类型与已经定义的某个数据变量的类型相同,或者与数据库表的某个列的数据类型相同,这时可以使用%TYPE。

使用%TYPE特性的优点在于:

●所引用的数据库列的数据类型可以不必知道;

●所引用的数据库列的数据类型可以实时改变。

例5:

--用%TYPE类型定义与表相配的字段

TYPEt_RecordISRECORD(

T_noemp.empno%TYPE,

T_nameemp.ename%TYPE,

T_salemp.sal%TYPE);

--声明接收数据的变量

v_empt_Record;

SELECTempno,ename,salINTOv_empFROMempWHEREempno=7788;

DBMS_OUTPUT.PUT_LINE

(TO_CHAR(v_emp.t_no)||v_emp.t_name||TO_CHAR(v_emp.t_sal));

例6:

v_empnoemp.empno%TYPE:

=&

empno;

Typer_recordisrecord(

v_nameemp.ename%TYPE,

v_salemp.sal%TYPE,

v_dateemp.hiredate%TYPE);

Recr_record;

SELECTename,sal,hiredateINTORecFROMempWHEREempno=v_empno;

DBMS_OUTPUT.PUT_LINE(Rec.v_name||'

---'

||Rec.v_sal||'

--'

||Rec.v_date);

2.4.3使用%ROWTYPE

PL/SQL提供%ROWTYPE操作符,返回一个记录类型,其数据类型和数据库表的数据结构相一致。

使用%ROWTYPE特性的优点在于:

●所引用的数据库中列的个数和数据类型可以不必知道;

●所引用的数据库中列的个数和数据类型可以实时改变。

例7:

v_empnoemp.empno%TYPE:

recemp%ROWTYPE;

SELECT*INTOrecFROMempWHEREempno=v_empno;

DBMS_OUTPUT.PUT_LINE('

姓名:

'

||rec.ename||'

工资:

||rec.sal||'

工作时间:

||rec.hiredate);

2.4.4LOB类型*

ORACLE提供了LOB(LargeOBject)类型,用于存储大的数据对象的类型。

ORACLE目前主要支持BFILE,BLOB,CLOB及NCLOB类型。

BFILE(Movie)

存放大的二进制数据对象,这些数据文件不放在数据库里,而是放在操作系统的某个目录里,数据库的表里只存放文件的目录。

BLOB(Photo)

存储大的二进制数据类型。

变量存储大的二进制对象的位置。

大二进制对象的大小<

=4GB。

CLOB(Book)

存储大的字符数据类型。

每个变量存储大字符对象的位置,该位置指到大字符数据块。

大字符对象的大小<

NCLOB

存储大的NCHAR字符数据类型。

2.4.5Bind变量

绑定变量是在主机环境中定义的变量。

在PL/SQL程序中可以使用绑定变量作为他们将要使用的其它变量。

为了在PL/SQL环境中声明绑定变量,使用命令VARIABLE。

VARIABLEreturn_codeNUMBER

VARIABLEreturn_msgVARCHAR2(20)

可以通过SQL*Plus命令中的PRINT显示绑定变量的值。

PRINTreturn_code

PRINTreturn_msg

VARIABLEresultNUMBER

SELECT(sal*12)+nvl(comm,0)INTO:

resultFROMempWHEREempno=7788;

PRINTresult

2.4.6INDEXBYTABLES

包括两个基本成分:

.数据处理类型为BINARY_INTEGER主键;

.标量或记录数据类型的列.

TYPEtype_nameISTABLEOF

{column_type|variable%TYPE|table.column%TYPE}[NOTNULL]|table%ROWTYPE

[INDEXBYBINARY_INTEGER];

方法

描述

EXISTS(n)

ReturnTRUEifthenthelementinaPL/SQLtableexists;

COUNT

ReturnsthenumberofelementsthataPL/SQLtablecurrentlycontains;

FIRST

LAST

Returnthefirstandlast(smallestandlastest)indexnumbersinaPL/SQLtable.ReturnsNULLifthePL/SQLtableisempty.

PRIOR(n)

ReturnstheindexnumberthatprecedesindexninaPL/SQLtable;

NEXT(N)

ReturnstheindexnumberthatsucceedsindexninaPL/SQLtable;

TRIM

TRIMremovesoneelementfromtheendofaPL/SQLtable.

TRIM(n)removesnelementfromtheendofaPL/SQLtable.

DELETE

DELETEremovesallelementsfromaPL/SQLtable.

DELETE(n)removesthenthelementsfromaPL/SQLtable.

DELETE(m,n)removesallelementsintherangemtonfromaPL/SQLtable.

例8:

TYPEdept_table_typeISTABLEOF

dept%ROWTYPEINDEXBYBINARY_INTEGER;

my_dname_tabledept_table_type;

v_countnumber

(2):

=4;

FORintIN1..v_countLOOP

SELECT*INTOmy_dname_table(int)FROMdeptWHEREdeptno=int*10;

ENDLOOP;

FORintINmy_dname_table.FIRST..my_dname_table.LASTLOOP

DBMS_OUTPUT.PUT_LINE(‘Departmentnumber:

‘||my_dname_table(int).deptno);

DBMS_OUTPUT.PUT_LINE(‘Departmentname:

‘||my_dname_table(int).dname);

2.4.7数据类型的转换*

隐式类型转换

BIN_INT

NUMBER

PLS_INT

BIN_INT 

CHAR 

RAW

2.5运算符和表达式(数据定义)

2.5.1关系运算符

运算符

意义

=

等于

<

>

!

=,~=,^=

不等于

小于

大于

小于或等于

大于或等于

2.5.2一般运算符

+

加号

-

减号

*

乘号

/

除号

:

赋值号

=>

关系号

..

范围运算符

||

字符连接符

2.5.3逻辑运算符

ISNULL

是空值 

BETWEEN

介于两者之间

IN

在一列值中间 

AND

逻辑与

OR

逻辑或

NOT

取返,如ISNOTNULL,NOTIN

2.6变量赋值

在PL/SQL编程中,变量赋值是一个值得注意的地方,它的语法如下:

variable:

=expression;

variable是一个PL/SQL变量,expression是一个PL/SQL表达式.

2.6.1字符及数字运算特点

空值加数字仍是空值:

NULL+<

数字>

=NULL

空值加(连接)字符,结果为字符:

NULL||<

字符串>

=<

字符串>

2.6.2BOOLEAN赋值

布尔值只有TRUE,FALSE及NULL三个

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2