PLSQL 定义record记录,plsqlrecord记录
1. PLSQL基本使用
注:1. 三段 declare
Begin
Exception
End;
2. 声明:emp.ename%type; 和字段的属性相同。
3. begin: select 带查询自动 into 存储变量。
4. 条件语句:
(1)if then
语句;
End if;
(2)When then
语句;
declare
v_ename emp.ename%type;
e_meet_scott exception;
begin
select ename into v_ename from emp where emp.empno=7788;
dbms_output.put_line('WHO?||v_ename');
if v_ename='SCOTT'then
raise e_meet_scott;
endif;
exception
when e_meet_scott then
dbms_output.put_line('AAAA,scott@@@@@');
end;
2. 记录
2.1自定义记录:
注:1.自定义结构体:
Declare 结构体名字 is record(
字段1,
字段2);
实例化结构体 结构体;
2. ‘’||’’ 连接字符串。
declare
type emp_basic_record isrecord(
empno emp.empno%type,
empname emp.ename%type,
empjob emp.job%type
);
emp_basic_info emp_basic_record;
begin
select empno,ename,job into emp_basic_info from emp
where empno=7788;
dbms_output.put_line('姓名:'|| emp_basic_info.empname);
end;
2.2 rowtype记录
注:1,使用rowtype创建记录。记录的字段名和原有的字段相同。
2. 创建多个rowtype,可以方便同时处理不同的记录
declare
emp_detail_info emp%rowtype;
begin
select empno,ename,job into emp_detail_info.empno
,emp_detail_info.ename,emp_detail_info.job from emp
where empno=7788;
dbms_output.put_line('姓名'||emp_detail_info.ename);
select table1.clo1,table1.clo2,table1.clo3 into r1.clo1,r1.clo2,r1.clo3 from table1
变量r1 是一个记录类型哦,r1 的结构和表table1 的结构完全一样,记录类型一次只能接受一条数据哦, 你再运行的时候添加一个限制条件,保证查出来的记录数只有一条,大概就这样了,不懂再问
当处理的数据项较少,并且每个数据项用几位二进制就可以表示时,就可以用record来定义,将这些数据项放在一个字节或者两个字节中。
比如student record name:4,sex:1
name宽度为4个二进制位,sex为1个,总宽度小于等于8,汇编程序将用1个字节表示记录。若总宽度超过8但是小于等于16,就用两个字节表示。
如果想找到其中的某个字段的具体值,则会用到移位值运算和屏蔽运算。
比如这样定义数据段:
data segment
s record a:4,b:1
s1 s <3,1>
s2 s <10,0>
data ends
那么内存中是这样分配的:
ds:0 07——这里的07,就是s1的值
ds:1 14——这里的14,就是s2的值。
mov bl,s1 ;取s1
mov al,mask a ;屏蔽运算,al中存放的就是字段a的屏蔽码,即该字段各位均为1,其他各位均为0,即1EH
and bl,al ;s1的字段a的值就在bl中存放了,但是还不是3,因为它右边还有字段b的一个位。于是还要进行移位运算。
mov cl,a ;a字段在记录中的位置,即需要移动的位数。
shr bl,cl ;此时bl中的值为s1中a字段的值——3
可以用下面这个程序分析一下,汇编连接后,用debug运行调试一下。
assume cs:code,ds:data
data segment
s record a:4,b:1
s1 s <3,1>
s2 s <10,0>
data ends
code segment
start: mov ax,data
mov ds,ax
mov al,mask a
mov bl,s1
and bl,al
mov cl,a
shr bl,cl
mov ax,4c00h
int 21h
code ends
end start
建议看看汇编语言教材中相关的内容。