--求半径2米,高3米的圆柱体体积。
declare
r number(4):= 2;
h number(4):=3;
begin
dbms_output.put_line('面积:'||3.14*h*power(r,2));
end;
--求字符串‘abcdefg’的长度。
declare
a varchar2(10):='abcdefg';
b number(4);
begin
dbms_output.put_line(length(a));
end;
--显示pubs数据库中所有作家的au_lname的开头两个字母,大写显示。(字符函数)
declare
a varchar2(10);
str varchar2(10) :='au_lname';
begin
select (UPPER(substr(str,1,1))||UPPER( substr(str,2,1))) into a from emp where empno = 7369;
dbms_output.put_line(a);
end;
--取字符串‘ abcdefg ’ 的第 2 到第 5 个字母。(字符函数)
declare
a varchar2(5);
begin
select substr('abcdefg',2,5) into a from dual;
dbms_output.put_line('字符为: ' || a);
end;
select to_char(sysdate, 'yyyymmdd') from dual
--计算 2001年 9 月 11日到今天已经多少天了。(日期函数)
declare
a number(20);
begin
select sysdate - to_date('20010911', 'yyyymmdd') into a from dual;
dbms_output.put_line('相差天数: ' || a);
end;
--查询emp表,找出编号为 7395 的记录,如果名字为 SCOTT 显示“找到了”否则显示“没找到”。(if语句)
declare
cursor cur_emp is
select ename from emp where empno=7395;
v_ename emp.ename%type;
v_name varchar2(20) := 'SCOTT';
begin
open cur_emp;
if not(cur_emp%isopen) then
open cur_emp;
dbms_output.put_line('没有打开游标');
end if;
fetch cur_emp into v_ename;
if v_ename= v_name then
dbms_output.put_line('找到了');
else dbms_output.put_line('没找到');
end if;
close cur_emp;
end;
--编写一个程序,用以接受用户输入的数字。将该数左右反转,然后显示反转后的数
declare
a varchar2(20);
v_n varchar2(20);
begin
a := '&n';
select reverse(a) into v_n from dual;
dbms_output.put_line(v_n);
end;
--.编写一个程序,在emp表中根据empno 查询职员信息。如果代码引发 NO_DATA_FOUND 异常,则显示一则消息.
declare
v_emp emp%rowtype;
v_empno number(12);
begin
v_empno := &empno;
select * into v_emp from emp where empno = v_empno;
exception
when NO_DATA_FOUND then
raise_application_error(-20002,'没有该人员');
end;
--编写一个程序,用以接受用户输入的DEPTCODE ,并从employee 表中检索该雇员的 EMPNO 。
--如果代码引发 TOO_MANY_ROWS 异常,则显示消息“返回多行”.
declare
v_input varchar2(20);
v_empno emp.empno%type;
begin
select empno into v_input from emp where deptno = &v_input;
exception
when too_many_rows then
dbms_output.put_line('返回多行');
end;