declare
msg varchar2(20);
msg1 varchar2(20);
begin
msg:= 1/0;
msg:='你是谁';
DBMS_OUTPUT.PUT_line(msg);
DBMS_OUTPUT.PUT_line(msg1);
EXCEPTION
when others then
DBMS_OUTPUT.PUT_line('有错误');
end;
conn sys/sys as sysdba;
CREATE user tangtang identified by tang1350;
declare
msg varchar(20);
begin
msg:='坏蛋你好';
DBMS_OUTPUT.put_line(msg);
end;
-- 创建员工表和部门表
create table dept(
deptno int primary key,
dname varchar2(20),
loc varchar2(100)
);
create table emp(
empno int primary key,
ename varchar2(20),
job varchar2(20),
mgr int,
hiredate date,
sal number(7,2),
comm number(7,2),
deptno int,
foreign key (deptno) references dept(deptno)
);
insert into dept (deptno,dname,loc) values (10,'accounting','new york');
insert into dept (deptno,dname,loc) values(20,'RESEARCH','DALLAS');
insert into dept (deptno,dname,loc) values (30,'sale','wuhan');
insert into dept (deptno,dname,loc) values(40,'IT','beijing');
insert into dept (deptno,dname,loc) values(50,'teaching','wuhan');
insert into dept (deptno,dname,loc) values(60,'personnel','wuhan');
insert into dept (deptno,dname,loc) values(70,'development','beijing');
insert into emp values (7369,'张三','boos',NULL,sysdate,10000.00,10000.00,10);
insert into emp values (7370,'smi','clerk',7369,sysdate,'800.00','800',70);
insert into emp values (7934,'miller','clerk',7369,to_date('2011-01-01','yyyy-mm-dd'),'1300.00','1000',10);
insert into emp values (7935,'silence','salesman',7369,to_date('2017-03-15','YYYY-MM-DD'),'4000.00','4100',70);
insert into emp values (7936,'tomn','salesman',7934,to_date('2017-02-15','yyyy-mm-dd'),'4500.00','4444',10);
insert into emp values (7937,'cat','teacher',7934,to_date('2017-03-23','yyyy-mm-dd'),'12345.00','12345',10);
insert into emp values (7938,'zhangsan','salesman',7369,to_date('2017-04-19','yyyy-mm-dd'),'3000.00','3000',70);
insert into emp values (7939,'lisi','salesman',7937,to_date('2016-11-17','yyyy-mm-dd'),'11111.00','11111',70);
insert into emp values (7940,'wangwu','teacher',7937,to_date('2016-10-13','yyyy-mm-dd'),'7000.00','8888',40);
insert into emp values (7941,'zhaoliu','docter',7937,to_date('2017-01-24','yyyy-mm-dd'),'3000.00','3000',40);
insert into emp values (7942,'xiaoming','MANAGER',7937,to_date('2016-08-11','yyyy-mm-dd'),'4600.00','5555',70);
DECLARE
sname varchar(20) :='廖宁';
begin
sname :=sname ||'湖南';
dbms_output.put_line(sname);
end;
declare
sname varchar(20);
begin
select ename into sname from EMP where empno=7369;
dbms_output.put_line(sname);
end;
-- 获取一列数据的类型
declare
sname emp.ename%type;
begin
select ename into sname from emp where empno=7369;
dbms_output.put_line(sname);
end;
-- 获取一条数据的类型
declare
emps emp%rowtype;
begin
select * into emps from emp where empno =7369;
dbms_output.put_line(emps.job);
end;
-- 指定部分字段的类型
declare
-- 创建一个类型 可以根据自己的需要添加需要的字段
type empa is record(
ename emp.ename%type,
job emp.job%type
);
-- 定义变量
emps empa;
begin
select ename,job into emps from emp where empno=7369;
dbms_output.put_line(emps.ename);
end;
declare
ssal emp.sal%type;
begin
select sal into ssal from emp where empno=7369;
if ssal>10000 then
update emp set comm =300 where empno =7369;
elsif ssal>8000 then
update emp set comm =8000 where empno=7369;
else
update emp set comm=800 where empno =7369;
end if;
commit;
end;
declare
v_grade char(2) := ('&ooo');
begin
dbms_output.put_line(v_grade);
case v_grade
when 'a' then
dbms_output.put_line('优');
end case;
end;
declare
i_sum number(4):=0;
i_i number(3):=1;
begin
loop
if i_i>=101 then
exit;
end if;
i_sum := i_sum+i_i;
i_i := i_i+1;
end loop;
dbms_output.put_line(i_sum);
end;
declare
i_sum number(4):=0;
i_i number(3):=1;
begin
while i_i<101 loop
i_sum := i_sum+i_i;
i_i := i_i+1;
end loop;
dbms_output.put_line(i_sum);
end;
declare
i_sum number(4):=0;
i_i number(3):=1;
begin
for i_i in 1..100 loop
i_sum:= i_sum+i_i;
end loop;
dbms_output.put_line(i_sum);
end;
declare
i_sum number(4):=0;
i_i number(3):=0;
begin
for i_i in reverse 1..100 loop
i_sum:=i_sum+i_i;
end loop;
dbms_output.put_line(i_sum);
end;
declare
sename emp.ename%type;
sempno emp.empno%type;
begin
sempno:=7369;
-- 动态Sql语句
execute immediate 'select ename from emp where empno=:1' into sename using sempno;
dbms_output.put_line(sename);
end;
begin
execute immediate 'create table liang(empno number,ename varchar(2))';
end;
declare
-- 定义游标
cursor liang is select ename,job from emp;
sname emp.ename%type;
sjob emp.job%type;
begin
-- 判断游标是否开启 没开启就开了她
if not liang%isopen then
open liang;
end if;
-- 抓取一条游标的值
fetch liang into sname,sjob;
dbms_output.put_line(sname);
-- 关闭游标
close liang;
end;
declare
cursor liang is select ename,job from emp;
begin
for emps in liang loop
dbms_output.put_line(emps.ename||''||emps.job);
end loop;
end;
-- 动态强游标
declare
type empcursor is ref cursor return emp%rowtype;
emps empcursor;
emp1 emps%rowtype;
begin
open emps for select * from emp;
loop
fetch emps into emp1;
exit when emps%notfound;
dbms_output.put_line(emp1.ename);
end loop;
end;
Oracle的基础
猜你喜欢
转载自delete-sql.iteye.com/blog/2399593
今日推荐
周排行