–1. 求半径2米,高3米的圆柱体体积。
declare
radius number :=2;–半径
height number:=3;–高
volume number;–体积
begin
volume:=3.14*radius*radius*height;
dbms_output.put_line(‘体积是’||volume);
end;
–2. 求字符串‘abcdefg’的长度。
declare
str varchar2(100) :=’abcdefg’;
begin
dbms_output.put_line(‘abcdefg的长度是’||length(‘abcdefg’));
end;
–3. 显示emp数据库中所有员工的ename的开头两个字母,大写显示。(字符函数)
declare
name emp.ename%type;
maxv number;
i number :=1;
rr number;
begin
select count(*) into maxv from emp ;
dbms_output.put_line(‘员工总人数:’||maxv);
for i in 1..maxv
loop
select m.v_name into name from(select rownum rn ,upper(substr(ename,1,2)) v_name from emp ) m where m.rn=i;
dbms_output.put_line(name);
end loop;
end;
–4. 取字符串‘abcdefg’的第2到第5个字母。(字符函数)
declare
s1 varchar2(10);
s varchar2(20) :=’abcdefg’;
begin
select substr(‘abcdefg’,2,4) into s1 from dual;
dbms_output.put_line(s1);
end;
–5. 计算2001年9月11日到今天已经多少天了。(日期函数)
declare
days number;
begin
select sysdate-to_date(‘2001-09-11′,’yyyy-mm-dd’) into days from dual;
dbms_output.put_line(‘相差:’||trunc(days)||’天’);
end;
–6. 查询emp表,找出编号为7395的记录,如果名字为SCOTT 显示“找到了”否则显示“没找到”。(if语句)
declare
v_name emp.ename%type;
begin
select ename into v_name from emp where empno = 7395;
if v_name = ‘SCOTT’ then
dbms_output.put_line(‘找到了’);
else
dbms_output.put_line(‘没找到’);
end if ;
exception
when no_data_found then
dbms_output.put_line(‘您输入的编号不存在’);
end;
–7.编写一个程序,用以接受用户输入的数字。将该数左右反转,然后显示反转后的数
–提示:使用循环控制结构.
declare
num number;–输入一个数字
lenth number;
i number;
su varchar2(20);
bb number ;
j number;
begin
–1.获取数值
num:=&aa;
–2.获取数值的长度
lenth:=length(num);
i:=lenth;
dbms_output.put_line(num||’的长度是’||length(num)); –打印数据的长度
while i>0
loop
–3.反着截取数字
bb :=substr(num,i,1);
dbms_output.put_line(‘截取到的字符是’||bb);
su:=su ||bb;
dbms_output.put_line(su);
–让aa恢复原值
i:=i-1;
end loop;
end;
–8.编写一个程序,在emp表中根据empno查询职员信息。如果代码引发NO_DATA_FOUND异常,则显示一则消息.
declare
e emp%rowtype;
begin
select * into e from emp where empno = &empno;
dbms_output.put_line(‘员工的信息如下’||e.ename||’#’||e.job);
exception
when no_data_found then
dbms_output.put_line(‘您查询的员工信息不存在’);
end;
–9.编写一个程序,用以接受用户输入的DEPTCODE,并从employee表中检索该雇员的EMPNO。
–如果代码引发TOO_MANY_ROWS异常,则显示消息“返回多行”.
declare
v_id emp.deptno%type;
begin
select empno into v_id from emp where deptno = &id;
exception
when too_many_rows then
dbms_output.put_line(‘返回多行’);
end;