数据库

位置:IT落伍者 >> 数据库 >> 浏览文章

PL/SQL基本语法要素(组图)


发布日期:2022年12月24日
 
PL/SQL基本语法要素(组图)

常量

定义常量的语法格式

常量名 constant 类型标识符 [not null]:=值;

常量包括后面的变量名都必须以字母开头不能有空格不能超过个字符长度同时不能和保留字同名常(变)量名称不区分大小写在字母后面可以带数字或特殊字符括号内的not null为可选参数若选用表明该常(变)量不能为空值

实例

在【SQLPlus Worksheet】中执行下列PL/SQL程序该程序定义了名为pi的数字型常量长度为

执行结果如图所示

―――――――――――――――――――――――――――――――――――――

declare

pi constant number():=;

begin

commit;

end;

―――――――――――――――――――――――――――――――――――――

【配套程序位置】章\constantdefinesql

基本数据类型变量

基本数据类型

PL/SQL中常用的基本数据类型如表所示

常见的数据基本类型

类型标识符 说明

Number 数字型

Int 整数型

Pls_integer 整数型产生溢出时出现错误

Binary_integer 整数型表示带符号的整数

Char 定长字符型最大个字符

Varchar 变长字符型最大个字符

Long 变长字符型最长GB

Date 日期型

Boolean 布尔型(TRUEFALSENULL三者取一)

在PL/SQL中使用的数据类型和Oracle数据库中使用的数据类型有的含义是完全一致的有的是有不同的含义的

基本数据类型变量的定义方法

变量名 类型标识符 [not null]:=值;

实例

在【SQLPlus Worksheet】中执行下列PL/SQL程序该程序定义了名为age的数字型变量长度为初始值为执行结果如图所示

―――――――――――――――――――――――――――――――――――――

declare

age number():=;

begin

commit;

end;

―――――――――――――――――――――――――――――――――――――

【配套程序位置】章\basicdatatypedefinesql

复合数据类型变量

下面介绍常见的几种复合数据类型变量的定义

使用%type定义变量

为了让PL/SQL中变量的类型和数据表中的字段的数据类型一致Oracle i提供了%type定义方法这样当数据表的字段类型修改后PL/SQL程序中相应变量的类型也自动修改

在【SQLPlus Worksheet】中执行下列PL/SQL程序该程序定义了名为mydate的变量其类型和tempusertesttable数据表中的currentdate字段类型是一致的

执行结果如图所示

―――――――――――――――――――――――――――――――――――――

Declare

mydate tempusertesttablecurrentdate%type;

begin

commit;

end;

―――――――――――――――――――――――――――――――――――――

【配套程序位置】章\typedefinesql

定义记录类型变量

很多结构化程序设计语言都提供了记录类型的数据类型在PL/SQL中也支持将多个基本数据类型捆绑在一起的记录数据类型

下面的程序代码定义了名为myrecord的记录类型该记录类型由整数型的myrecordnumber和日期型的mycurrentdate基本类型变量组成srecord是该类型的变量引用记录型变量的方法是记录变量名基本类型变量名

程序的执行部分从tempusertesttable数据表中提取recordnumber字段为的记录的内容存放在srecord复合变量里然后输出srecordmycurrentdate的值实际上就是数据表中相应记录的currentdate的值

在【SQLPlus Worksheet】中执行下列PL/SQL程序执行结果如图所示

―――――――――――――――――――――――――――――――――――――

set serveroutput on

declare

type myrecord is record(

myrecordnumber int

mycurrentdate date);

srecord myrecord;

begin

select * into srecord from tempusertesttable where recordnumber=;

dbms_outputput_line(srecordmycurrentdate);

end;

―――――――――――――――――――――――――――――――――――――

【配套程序位置】章\ recordtypedefinesql

在PL/SQL程序中select语句总是和into配合使用into子句后面就是要被赋值的变量

使用%rowtype定义变量

使用%type可以使变量获得字段的数据类型使用%rowtype可以使变量获得整个记录的数据类型比较两者定义的不同变量名 数据表列名%type变量名 数据表%rowtype

在【SQLPlus Worksheet】中执行下列PL/SQL程序该程序定义了名为mytable的复合类型变量与testtable数据表结构相同执行结果如图所示

―――――――――――――――――――――――――――――――――――――

Declare

mytable testtable%rowtype;

begin

select * into mytable

from tempusertesttable

where recordnumber=;

dbms_outputput_line(mytablecurrentdate);

end;

―――――――――――――――――――――――――――――――――――――

【配套程序位置】章\ rowtypedefinesql

定义一维表类型变量

表类型变量和数据表是有区别的定义表类型变量的语法如下

―――――――――――――――――――――――――――――――――――――

type 表类型 is table of 类型 index by binary_integer;

表变量名 表类型;

―――――――――――――――――――――――――――――――――――――

类型可以是前面的类型定义index by binary_integer子句代表以符号整数为索引这样访问表类型变量中的数据方法就是表变量名(索引符号整数)

在【SQLPlus Worksheet】中执行下列PL/SQL程序该程序定义了名为tabletype和tabletype的两个一维表类型相当于一维数组table和table分别是两种表类型变量

执行结果如图所示

―――――――――――――――――――――――――――――――――――――

Declare

type tabletype is table of varchar() index by binary_integer;

type tabletype is table of tempusertesttablerecordnumber%type index by binary_integer;

table tabletype;

table tabletype;

begin

table():=大学;

table():=大专;

table():=;

table():=;

dbms_outputput_line(table()||table());

dbms_outputput_line(table()||table());

end;

―――――――――――――――――――――――――――――――――――――

【配套程序位置】章\ tabletypedefinesql

||是连接字符串的运算符

定义多维表类型变量

在【SQLPlus Worksheet】中执行下列PL/SQL程序该程序定义了名为tabletype的多维表类型相当于多维数组table是多维表类型变量将数据表tempusertesttable中recordnumber为的记录提取出来存放在table中并显示执行结果如图所示

―――――――――――――――――――――――――――――――――――――

Declare

type tabletype is table of testtable%rowtype index by binary_integer;

table tabletype;

begin

select * into table()

from tempusertesttable

where recordnumber=;

dbms_outputput_line(table()recordnumber||table()currentdate);

end;

―――――――――――――――――――――――――――――――――――――

【配套程序位置】章\ tabletypedefinesql

在定义好的表类型变量里可以使用countdeletefirstlastnextexists和prior等属性进行操作使用方法为表变量名属性返回的是数字

在【SQLPlus Worksheet】中执行下列PL/SQL程序该程序定义了名为tabletype的一维表类型table是一维表类型变量变量中插入个数据综合使用了表变量属性

执               

上一篇:OracleRAC之名词解惑

下一篇:Oracle数据库中如何根据时间来执行JOB