--1. 求半径2米,高3米的圆柱体体积。
declare
r number:=2;
h number:=3;
pi number:=3.14;
area number;
begin
area:=pi*r*r*h;
dbms_output.put_line('半径2米,高3米的圆柱体体积='||area);
end;
--2. 求字符串‘abcdefg’的长度。
declare
len number;
begin
len := length('abcdefg');
dbms_output.put_line('字符串abcdefg的长度='||len);
end;
--3. 显示emp数据库中所有所有员工名字改成第一个字母大写其他小写的形式(字符函数)
declare
name emp.ename%type;
maxv number;
i number :=1;
rr number;
begin
select count(*) into maxv from emp ;
for i in 1..maxv
loop
select m.v_name into name
from
(select rownum rn ,NLS_INITCAP(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
v_string varchar2(10);
begin
v_string := substr('abcdefg',2,4);
dbms_output.put_line(v_string);
end;
--5. 计算2001年9月11日到今天已经多少天了。(日期函数)
declare
day number;
begin
day := trunc(sysdate - to_date('2001-09-11','yyyy-mm-dd'));
dbms_output.put_line('距离2001年9月11日到今天'||day||'天');
end;
--6. 查询emp表,找出编号为7395的记录,如果名字为SCOTT 显示“找到了”否则显示“没找到”。(if语句)
declare
scottinfo emp%rowtype;
begin
select * into scottinfo from emp where empno=7395;
if(scottinfo.ename = '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
v_char1 varchar2(100);
v_char2 varchar2(100);
v_c char(1);
begin
v_char1 :='159263';
dbms_output.put_line('输入的数据为:'||v_char1);
for i in reverse 1..length(v_char1)
loop
v_c := substr(v_char1,i,1);
v_char2 := v_char2 ||v_c;
end loop;
dbms_output.put_line('反转后的数字为:'||v_char2);
end;
--8. 编写一个程序,在emp表中根据empno查询职员信息。如果代码引发NO_DATA_FOUND异常,则显示一则消息.
declare
empinfo emp%rowtype;
begin
select * into empinfo from emp where empno = '7666';
dbms_output.put_line(empinfo.empno||empinfo.ename);
exception
when no_data_found then
dbms_output.put_line('没有该职员');
end;
--9. 编写一个程序,用以接受用户输入的DEPTCODE,并从employee表中检索该雇员的EMPNO。如果代码引发TOO_MANY_ROWS异常,则显示消息“返回多行”.
create view employee
as
select e."JOB",e.sal,e.empno,e.ename,e.mgr,e.hiredate,e.comm,d.deptno,d.dname,loc
from emp e,dept d;
declare
A_SCOTT employee.empno%type;
begin
select empno into A_SCOTT from employee where deptno = 20;
exception
when too_many_rows then
dbms_output.put_line('返回多行');
end;
declare
r number:=2;
h number:=3;
pi number:=3.14;
area number;
begin
area:=pi*r*r*h;
dbms_output.put_line('半径2米,高3米的圆柱体体积='||area);
end;
--2. 求字符串‘abcdefg’的长度。
declare
len number;
begin
len := length('abcdefg');
dbms_output.put_line('字符串abcdefg的长度='||len);
end;
--3. 显示emp数据库中所有所有员工名字改成第一个字母大写其他小写的形式(字符函数)
declare
name emp.ename%type;
maxv number;
i number :=1;
rr number;
begin
select count(*) into maxv from emp ;
for i in 1..maxv
loop
select m.v_name into name
from
(select rownum rn ,NLS_INITCAP(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
v_string varchar2(10);
begin
v_string := substr('abcdefg',2,4);
dbms_output.put_line(v_string);
end;
--5. 计算2001年9月11日到今天已经多少天了。(日期函数)
declare
day number;
begin
day := trunc(sysdate - to_date('2001-09-11','yyyy-mm-dd'));
dbms_output.put_line('距离2001年9月11日到今天'||day||'天');
end;
--6. 查询emp表,找出编号为7395的记录,如果名字为SCOTT 显示“找到了”否则显示“没找到”。(if语句)
declare
scottinfo emp%rowtype;
begin
select * into scottinfo from emp where empno=7395;
if(scottinfo.ename = '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
v_char1 varchar2(100);
v_char2 varchar2(100);
v_c char(1);
begin
v_char1 :='159263';
dbms_output.put_line('输入的数据为:'||v_char1);
for i in reverse 1..length(v_char1)
loop
v_c := substr(v_char1,i,1);
v_char2 := v_char2 ||v_c;
end loop;
dbms_output.put_line('反转后的数字为:'||v_char2);
end;
--8. 编写一个程序,在emp表中根据empno查询职员信息。如果代码引发NO_DATA_FOUND异常,则显示一则消息.
declare
empinfo emp%rowtype;
begin
select * into empinfo from emp where empno = '7666';
dbms_output.put_line(empinfo.empno||empinfo.ename);
exception
when no_data_found then
dbms_output.put_line('没有该职员');
end;
--9. 编写一个程序,用以接受用户输入的DEPTCODE,并从employee表中检索该雇员的EMPNO。如果代码引发TOO_MANY_ROWS异常,则显示消息“返回多行”.
create view employee
as
select e."JOB",e.sal,e.empno,e.ename,e.mgr,e.hiredate,e.comm,d.deptno,d.dname,loc
from emp e,dept d;
declare
A_SCOTT employee.empno%type;
begin
select empno into A_SCOTT from employee where deptno = 20;
exception
when too_many_rows then
dbms_output.put_line('返回多行');
end;