PL⼀SQL题(带答案),求解说高手 (答案连接)

2025-06-22 14:25:56
推荐回答(1个)
回答1:

/*1.怎么查询内容带引号?lpad(i, 4, '0')是什么意思?*/
LPAD(i, 4, '0')就是说如果i不够4位,就在左边补0,譬如i为1,则返回0001,如果i为123,返回0123
into vn_student_name
from dual;
/*2.此表是哪来的?*/ dual是oracle里面的一个特殊表,系统自带的,只有一行,用这个来作为from后面的,就只返回一条记录

select trunc(dbms_random.value(17, 20)) into vn_student_age from dual;
/*3.此语句详细解释每个词的意思,与使用方法*/
dbms_random.value(17, 20)返回一个大于等于17,小于20的数字。trunc() 忽略小数点部分,返回整数部分

select trunc(dbms_random.value(1, 151)) into vn_chinese from dual;
select trunc(dbms_random.value(1, 151)) into vn_enlish from dual;
select trunc(dbms_random.value(1, 151)) into vn_computer from dual;
vn_all := vn_chinese + vn_enlish + vn_computer;

vn_student_sex := round(DBMS_RANDOM.VALUE(1, 2));
将产生一个大于等于1,小于2得随机数,round()函数四舍五入取整数
/*4.等号后边的用法说明*/
if vn_student_sex = 1 then
/*5.if语句如何实现功能简述,boy和girl不用定义?怎么还出现501了*/
功能很清晰啊,根据student_sex来给girl, boy数量+1
girl := girl + 1;
else
boy := boy + 1;
end if;

if boy >= 501 then
vn_student_sex := 1;
elsif girl >= 501 then
vn_student_sex := 2;
end if;
vn_paiming := 1;

insert into student_test
values
(vn_student_name,
vn_student_sex,
vn_student_age,
vn_chinese,
vn_enlish,
vn_computer,
vn_all,
vn_paiming,
'Y');
end loop;
commit;
/*6.往后是啥意思?*/
根据curose c_tt来做更新student_tet操作。根据student_test里面的纪录数字判断是否要更新student_test if_hege字段
如果有sql exception发生,就rollback