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;
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;
相关文章推荐
- SQL语句练习
- SQL数据库面试题以及答案(50例题优化版-增加图片):你必知必会的SQL语句练习
- 走向面试之数据库基础:一、你必知必会的SQL语句练习-Part 1
- 基础篇—SQL语句相关概念及练习
- sql查询-sql练习
- SQL语句相关概念及练习之基础篇
- T-SQL:基础练习(杂)
- sql语句练习
- sql综合练习
- SQL之常用时间函数练习
- 【SQL重温】面试之数据库基础练习
- 走向面试之数据库基础:一、你必知必会的SQL语句练习-Part 1
- Oracle SQL:经典入门级查询练习(1)
- 练习WF SqlTrackingService时的一点注意事项 及一点感言
- 天天SQL(查询所有子节点及其函数的练习)
- [转载]sql语句练习50题
- 开源ECSHOP中SQL DELETE\INSERT\UPDATE操作集锦,练习SQL
- Oracle数据库之SQL语句练习
- 基本SQL语句练习(order by,group by,having)
- 一个SQL的小练习