PLSQL基础(一)记录(相当于结构体)

PLSQL在工作中断断续续会用到,每次用的时候,都需要查资料,熟悉一下语法格式.现在特记录下来,免得以后使用过程中,总是查资料.

 

 

块的分类

块可以分为以下四类

1)无名块:动态构造并只能执行一次。

2)命名块:前面加了标号的无名块

3)子程序:包括储存在数据库中的储存过程,函数和包.这些块一旦被定义后,便可随时调用。

4)触发器:它是储存在数据库中的块,这些块一旦被构造后,就可以多次执行。当触发它的事件发生时调用该触发器。触发事件是指对表中数据的操作,如插入,删除和修改.

 

 

 

 

 

 

复合类型

在PL/SQL中有两种复合类型

1)记录  2)表

 

记录  (相当于结构体)

TYPE recode_type IS RECORD

(

       field1  type1 [NOT NULL] [:=expr1],

       field2  type2 [NOT NULL] [:=expr2],

       ......

       field3   type3 [NOT NULL] [:=exprn]

);

其中record_type表示记录类型的名字,field表示记录里域的名字,type表示记录里域的类型,expr表示为域赋的初始值.

 

当定义了一个记录类型后,就可以声明记录类型的变量了.

 

DECLARE

    TYPE  t_AuthRec IS RECORD

(

       AuthorCode            VARCHAR2(10),

       Name                     auths.name%type,

       Birthdate                auths.birthdate%yepe,

       EntryDateTime        auths.entry_date_time%type

);

 

声明t_ArticleRec 记录类型的变量

v_Article1  t_AuthRec ;

v_Article2   t_AuthRec ;

当定义了一个记录类型变量后,可以按照下面的语句引用记录中的域:

recode_name.fiele_name

不仅可以为记录的域赋值,具有相同类型的两个记录也可以相互赋值。

v_Article1 := v_Article2

 

也可用select语句来为记录赋值,这种方法是从数据库表中检索出数据,然后将他们存入记录中,要注意,记录中的域的类型一定要和SELECT列表中域的类型一致。

SELECT  author_code,name,birthdate,entry_date_time

   INTO   v_Author

  FROM   auths

WHERE  author_code = 'A00009';

 

在PLSQL中经常会遇到这样的声明---声明一个与数据库表中各类型相同的记录。为了简化这种记录的声明,PLSQL提供了%ROWTYPE操作符,类似于%TYPE.

%ROWTYPE返回一个记录类型,这个记录类型中域类型与定义该记录的表中各列的类型相同。

下面定义了一个与表article相同的记录:

v_Article   article%ROWTYPE;

使用%ROWTYPE声明的记录包括数据库表中列的NOT NULL约束,但包括VARCHAR2列和CHAR列的长度,number列的精度和标度,当表定义发生改变时,%ROWTYPE声明的记录也发送相应的改变.

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

szwm1010

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值