编写一个过程 可以输入一个雇员名,如果该雇员的工资低于2000 就加上10%
create or replace procedure pro06(v_name varchar2) is
v_sal emp.sal%type
begin
select sal into v_sal from emp where ename=v_name;
if v_sal<2000 then
update emp set sal=sal+sal*10% where name=v_name;
end if;
end;
输入一个雇员名 如果补助不是0 就在原先基础上加上100;如果为0就设为200
create or replace procedure pro07(v_name varchar2) is
v_comm emp.comm%type
begin
select comm into v_comm from emp where ename=v_name;
if v_comm<>0 then
update emp set comm=comm+100 where name=v_name;
else
update emp set comm=comm+200 where name=v_name;
end if;
end;
输入一个雇员编号 如果职位是president 工资加1000;
如果是manager 工资加500; 其他 工资加200
create or replace procedure pro08(v_no number) is
v_job emp.job%type
begin
select job into v_job from emp where empno=v_no;
if v_job='PRESIDENT' then
update emp set sal=sal+1000 where empno=v_no;
else if v_job='MANAGER' then
update emp set sal=sal+500 where empno=v_no;
else
update emp set sal=sal+200 where empno=v_no;
end if;
end;
循环语句 loop
循环添加10个用户
create or replace procedure pro09(v_name varchar2) is
v_num number:=1;
begin
loop
insert into users values (v_num,v_name);
exit when v_num=10;
v_num:=v_num+1;
end loop;
end;
循环语句while
添加10个用户 从编号11开始
create or replace procedure pro10(v_name varchar2) is
v_num number:=11;
begin
while v_num<20 loop
insert into users values (v_num,v_name);
v_num:=v_num+1;
end loop;
end;
goto语句是可以直接跳转
null语句不会执行任何操作,并且会直接将控制传递到下一条语句
使用null的好处是可以提高pl/sql的可读性
自定义例外
create or replace procedure ex_test(v_no number) is
myex exception;
begin
update emp set sal=sal+1000 where empno=v_no;
if sql%notfound then --没有正常update
raise myex;--触发例外
end if;
exception
when myex then
dbms_output.put_line('没有此用户!');
end;
create or replace procedure pro06(v_name varchar2) is
v_sal emp.sal%type
begin
select sal into v_sal from emp where ename=v_name;
if v_sal<2000 then
update emp set sal=sal+sal*10% where name=v_name;
end if;
end;
输入一个雇员名 如果补助不是0 就在原先基础上加上100;如果为0就设为200
create or replace procedure pro07(v_name varchar2) is
v_comm emp.comm%type
begin
select comm into v_comm from emp where ename=v_name;
if v_comm<>0 then
update emp set comm=comm+100 where name=v_name;
else
update emp set comm=comm+200 where name=v_name;
end if;
end;
输入一个雇员编号 如果职位是president 工资加1000;
如果是manager 工资加500; 其他 工资加200
create or replace procedure pro08(v_no number) is
v_job emp.job%type
begin
select job into v_job from emp where empno=v_no;
if v_job='PRESIDENT' then
update emp set sal=sal+1000 where empno=v_no;
else if v_job='MANAGER' then
update emp set sal=sal+500 where empno=v_no;
else
update emp set sal=sal+200 where empno=v_no;
end if;
end;
循环语句 loop
循环添加10个用户
create or replace procedure pro09(v_name varchar2) is
v_num number:=1;
begin
loop
insert into users values (v_num,v_name);
exit when v_num=10;
v_num:=v_num+1;
end loop;
end;
循环语句while
添加10个用户 从编号11开始
create or replace procedure pro10(v_name varchar2) is
v_num number:=11;
begin
while v_num<20 loop
insert into users values (v_num,v_name);
v_num:=v_num+1;
end loop;
end;
goto语句是可以直接跳转
null语句不会执行任何操作,并且会直接将控制传递到下一条语句
使用null的好处是可以提高pl/sql的可读性
自定义例外
create or replace procedure ex_test(v_no number) is
myex exception;
begin
update emp set sal=sal+1000 where empno=v_no;
if sql%notfound then --没有正常update
raise myex;--触发例外
end if;
exception
when myex then
dbms_output.put_line('没有此用户!');
end;