-声明方法
–赋值操作可以用:=也可以用into查询语句赋值
declare
i number(2) :=10;
s varchar(10) :='小明';
ena emp.ename%type;--引用型变量-获取数据类型
--不知道类型就引用他的类型
--表中的每一行记录是一个对象
emprow emp%rowtype;--记录型变量
begin
dbms_output.put_line(i);
dbms_output.put_line(s);
select ename into ena from emp where empno ='7788';
--以查询的方式获取数据库的数据
dbms_output.put_line(ena);
select * into emprow from emp where empno ='7788';
dbms_output.put_line(emprow.ename);
dbms_output.put_line(emprow.ename||'的工作为:'||emprow.job||',工资为:'||emprow.sal);
end;
–pl/sql中的if判断
declare
i number(3) := &a;
begin
if i<18 then
dbms_output.put_line('未成年');
elsif i<40 then
dbms_output.put_line('中年人');
else
dbms_output.put_line('老年人');
end if;
end;
–循环
–while 循环
declare
i number(2):=1;
begin
while i<11 loop
dbms_output.put_line(i);
i :=i+1;
end loop;
end;
–exit 循环
declare
i number(2) :=1;
begin
loop
exit when i>10;
dbms_output.put_line(i);
i :=i+1;
end loop;
end;
–for循环
declare
begin
for i in 1..10 loop
dbms_output.put_line(i);
end loop;
end;
--------------游标:可以存放多个对象,多行记录。
–输出emp表中所有员工的姓名
declare
cursor c1 is select*from emp;--定义一个游标cursorn 名字c1
--把emp的值存到游标中
emprow emp%rowtype; --定义emprow 的类型
begin
open c1;--打开c1
loop
fetch c1 into emprow;--把取值放入emprow中
exit when c1%notfound;
--当C1中取不到值得时候退出
dbms_output.put_line(emprow.ename);--输出名称
end loop;
close c1;
end;
–给指定部门员工涨工资
declare
cursor c2(eno emp.deptno%type)--eno 类型
is select empno from emp where deptno=eno;
--eno用来存放deptno
en emp.empno%type;
begin
open c2(10);--打开的时候赋值,10号部门
loop
fetch c2 into en;--存放在en
exit when c2%notfound;
update emp set sal =sal+100 where empno=en;
--修改工资
commit;--要提交
end loop;
close c2;
end;
--查询10号部门员工信息
select *from emp where deptno=10;
-----------------存储过程
–存储过程:就是提前编译一段pl/sql语言,放置在数据端。
–可以直接被调用,一般都是固定步骤的业务。
–给指定员工涨100块钱
create or replace procedure p1(eno emp.empno%type)
is--is或者as都可以
--or replace加上可以修改
begin
update emp set sal=sal+100 where empno=eno;
commit;
end;
--测试P1;
declare
begin
p1(7788);
end;
--
select*from emp where empno=7788;
绿色时表示测试P1正确。