📄 罗彭宇.txt
字号:
1,从控制台打印下列信息(用签套的循环,外层循环控制行,内层循环控制*号的个数以及出现的样式)
*
***
*****
*******
*****
***
*
第2题:
给表建立自增长序列
create sequence seq_lpystudent increment by 1 start with 1;
给表插入数据
insert into lpy_student (sno,name,sex,age,cno,score) values (11,'a','男',40,1,39);
insert into lpy_student (sno,name,sex,age,cno,score) values (12,'b','女',27,2,80); insert into lpy_student (sno,name,sex,age,cno,score) values (13,'c','男',18,3,70);
insert into lpy_student (sno,name,sex,age,cno,score) values (14,'d','男',19,4,56);
insert into lpy_student (sno,name,sex,age,cno,score) values (15,'e','女',19,5,70);
insert into lpy_student (sno,name,sex,age,cno,score) values (16,'f','女',18,1,52);
insert into lpy_student (sno,name,sex,age,cno,score) values (17,'g','男',18,2,47);
insert into lpy_student (sno,name,sex,age,cno,score) values (18,'h','女',18,3,50);
insert into lpy_student (sno,name,sex,age,cno,score) values (19,'i','男',41,4,49);
insert into lpy_student (sno,name,sex,age,cno,score) values (20,'j','男',19,5,61);
2,在程序块里写一个事务分成两个单元(一个存储点)
存储点之前给emp表插入一行数据
存储点之后给emp表的某一行修改下age ,然后查询该行的age ,如果age > 40 回滚到存储点提交事务,如果条件不满足,提交整个事务
用自定义的表lpy_student代替了emp表。
declare
selectage lpy_student.age%type;
selectage_error exception; --自定义异常。
dup_all_no_index exception;
begin
insert into lpy_student (sno,name,sex,age,cno,score) values (29,'j','男',19,5,61);
savepoint sp1;--第一部分结束,设置保留点。
update lpy_student set age=&age where sno=&sno;
select age into selectage from lpy_student where sno = &sno;
dbms_output.put_line('要判断的年龄为:'||selectage);
if selectage>40
then
rollback to sp1; --事务回退到sp1保留点。
dbms_output.put_line('事务回退到sp1保留点');
else
null;
dbms_output.put_line('全部提交');
end if;
commit; --提交事务。
exception --捕获异常。
when dup_all_no_index then
dbms_output.put_line('违反了惟一约束中插入重复的值');
when selectage_error then
dbms_output.put_line('年龄小于40'||selectage);
end;
3,给%TYPE %ROWTYPE RECORD TABLE四种类型分别举出相应的例子
(1)%TYPE的例子。
<<%TYPE>>--定义名字为%TYPE的块。
declare
user_ename emp.ename%type;
--定义一个和emp.ename字段具有相同数据类型名为user_ename的变量。
user_sal emp.sal%type;
--定义一个和emp.sal字段具有相同数据类型的名为user_sal的变量。
begin
select ename,sal into user_ename,user_sal from emp
where empno = &eno;
dbms_output.put_line('雇员名'|| user_ename);
--调用dbms_output程序包中的put_line方法打印输出user_ename变量。
dbms_output.PUT_line('工资'||user_sal);
--调用dbms_output程序包中的put_line方法打印输出user_sal变量。
end %TYPE;
出现错误:
PLS-00103: 出现符号 ";"在需要下列之一时:
:= . ( % ;
符号 ":=在 ";" 继续之前已插入。
解决办法:可能是中英问的“;”书写有误造成的。
(2)%rowtype的例子。
declare
user_emp emp%rowtype;
--定义一个名为user_emp和emp表中的数据类型相一致,相对应的变量表。
begin
select * into user_emp --给user_emp附值。
from emp
where empno = &eno;
dbms_output.put_line('雇员名称:'||user_emp.ename);
--调用dbms_output内置程序包中的put_line方法输出变量user_emp.ename。
dbms_output.put_line('工资:'||user_emp.sal);
--调用dbms_output内置程序包中的put_line方法输出变量user_emp.sal。
dbms_output.put_line('工作岗位:'||user_emp.job);
--调用dbms_output内置程序包中的put_line方法输出变量user_emp.job。
end;
出现错误:
PLS-00103: 出现符号 ";"在需要下列之一时:
; <an identifier>
<a double-quoted delimited-identifier>
原因和解决办法:
在from emp%rowtype行后多加了个分号,去掉即可。
(3)RECORD的例子.
declare
Type emp_record_type IS RECORD(
name emp.ename%type,--定义一个和emp.ename字段具有相同数据类型名为name的变量。
salary emp.sal%type,--定义一个和emp.sal字段具有相同数据类型名为sal的变量。
job emp.job%type);--定义一个和emp.job字段具有相同数据类型名为job的变量。
emp_record emp_record_type;
--自定义一个名为emp_record的复合数据类型。
begin
select ename,sal,job into emp_record --给emp_record复合数据类型附值。
from emp
where empno = &eno;
dbms_output.put_line('雇员名称:'||emp_record.name);
--调用dbms_output内置程序包中的put_line方法输出变量emp_record.name。
dbms_output.put_line('工资:'||emp_record.salary);
--调用dbms_output内置程序包中的put_line方法输出变量emp_record.salary。
dbms_output.put_line('工作岗位:'||emp_record.job);
--调用dbms_output内置程序包中的put_line方法输出变量emp_record.job。
end;
(4)TABLE的例子.
declare
Type emp_table_type IS table
of emp.ename%type
index by binary_Integer;
emp_table emp_table_type;
--自定义一个名为emp_table的组变量。
begin
select ename into emp_table(-8) --给emp_table的组变量(-8)这个数附值。
from emp
where empno = &eno;
emp_table(0) := 'lpy'; --为emp_table的组变量(0)这个数定义个变量。
emp_table(8) :='xyz';--为emp_table的组变量(8)这个数定义个变量。
dbms_output.put_line('雇员名称:'||emp_table(-8));
--调用dbms_output内置程序包中的put_line方法输出变量emp_table(-8)。
dbms_output.put_line(''||emp_table(0));
--调用dbms_output内置程序包中的put_line方法输出变量emp_table(0)。
dbms_output.put_line(''||emp_table(8));
--调用dbms_output内置程序包中的put_line方法输出变量emp_table(8)。
end;
4,定义一个table 里面存放的是%rowtype类型,用该类型定义一个变量datas,从emp表取五行记录放到datas里面,通过循环,把五行数据的值输出来
用自定义的表lpy_student代替了emp表。
declare
type row_table is table of lpy_student%rowtype index by binary_integer;
datas row_table;
begin
for i in 1..5 loop
select * into datas(i) from lpy_student where sno=i;
end loop;
for i in 1..5 loop
dbms_output.put('sno:'||datas(i).sno);
dbms_output.put(' name:'||datas(i).name);
dbms_output.put(' sex:'||datas(i).sex);
dbms_output.put(' age:'||datas(i).age);
dbms_output.put(' cno:'||datas(i).cno);
dbms_output.put(' score:'||datas(i).score);
dbms_output.new_line();
end loop;
end;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -