您的位置:首页 > 数据库

sql练习3

2017-07-26 16:19 155 查看
--1. 求半径2米,高3米的圆柱体体积。

DECLARE

tiji number :=3.14*2*2*3; 

BEGIN

dbms_output.put_line('圆柱的体积为:'||tiji);

END;

--2. 求字符串‘abcdefg’的长度。

DECLARE

len NUMBER;--:=LENGTH('abcdefg') ; 

BEGIN

 SELECT LENGTH('abcdefg') INTO len  

 from dual;

dbms_output.put_line('字符串‘abcdefg’的长度为:'||len);

END;

--3. 显示pubs数据库中所有作家的au_lname的开头两个字母,大写显示。(字符函数)

CREATE TABLE pubs(

  au_lname VARCHAR2(20) NOT NULL,
au_num  number  NOT NULL

)

INSERT INTO pubs(au_lname,au_num)

VALUES ('abcde',12);

DECLARE
anam pubs.au_lname%TYPE;

BEGIN

SELECT au_lname INTO anam
FROM pubs ;
anam:=upper(substr(anam,1,2));
dbms_output.put_line(anam);

END;

--4. 取字符串‘abcdefg’的第2到第5个字母。(字符函数)

DECLARE

str VARCHAR2(10); 

BEGIN

 SELECT SUBSTR('abcdefg',2,4) INTO str  

 from dual;

dbms_output.put_line('字符串abcdefg的第2到第5个字母为:'||str);

END;

--5. 计算2001年9月11日到今天已经多少天了。(日期函数)

DECLARE

v_d NUMBER:=(SYSDATE-TO_DATE('2001-09-11', 'yyyy-mm-dd')); 

BEGIN

dbms_output.put_line(v_d);

END;

--6.  查询emp表,找出编号为7395的记录,如果名字为SCOTT 显示“找到了”否则显示“没找到”。(if语句)

DECLARE

v_q EMP %rowtype; 

BEGIN

 SELECT * INTO v_q  

 from emp e

 WHERE e.EMPNO=7395;

 if (v_q.ename='SCOTT')

THEN

--专门输出语句 

dbms_output.put_line('找到了');

ELSE

dbms_output.put_line('没找到');

END IF;

exception--异常处理 如果没有找到数据

when others THEN

    dbms_output.put_line('没有找到员工');

END;

--7.编写一个程序,用以接受用户输入的数字。将该数左右反转,然后显示反转后的数

--提示:使用循环控制结构.

DECLARE 

v_n NUMBER:=123;

len NUMBER:=LENGTH(v_n);

begin 

for i in  reverse 1 .. len--从1-100 reverse 倒过来100-1

loop

dbms_output.put(i);

end loop;

  dbms_output.put_line('');

end;

--8.编写一个程序,在emp表中根据empno查询职员信息。如果代码引发NO_DATA_FOUND异常,则显示一则消息.

DECLARE  --错误处理

v_s emp %rowtype;

begin 

select * into v_s

from emp e

where e.empno is NULL;

dbms_output.put_line( v_s.empno||v_s.ename);

EXCEPTION

when no_data_found THEN

dbms_output.put_line('没有该职员');--当前错误信息,系统异常

end;

--9.编写一个程序,用以接受用户输入的DEPTCODE,并从employee表中检索该雇员的EMPNO。如果代码引发TOO_MANY_ROWS异常,则显示消息“返回多行”.

declare

   info emp.empno%type;

begin

   select empno into info from emp  where (SELECT COUNT(deptno)from emp)>1;--deptno is not null;

exception

    when too_many_rows then

       dbms_output.put_line('返回多行');

end;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: