一.声明变量,给变量赋值
declare
v_name varchar2(30);
--声明变量的数据类型和表中的某个列的类型一致
v_job emp.job%type;
begin
--给变量赋值
v_name:='崔宸';
--通过select给变量赋值,要保证查询结果的唯一性:提那家查询条件
select ename,job into v_name,v_job from emp where empno=7788;
--输出变量的值
dbms_output.put_line(v_name||'---'||v_job);
end;
二.循环
1.loop循环
declare
v_age number(3,0):=1;
begin
loop
if v_age>=18 then exit;
end if;
v_age:=v_age+1;
end loop;
dbms_output.put_line('v_age='||v_age);
end;
2.while循环
declare
v_num number(3,0):=1;
v_sum number(6,0):=0;
begin
while v_num<=100 loop
v_sum:=v_sum+v_num;
v_num:=v_num+1;
end loop;
dbms_output.put_line(v_sum);
end;
3.for循环
declare
v_sum number(4,0):=0;
begin
for i in 1..100 loop
v_sum:=v_sum+i;
end loop;
dbms_output.put_line(v_sum);
end;
三.存储过程
完成业务功能处理,不能返回值
存储过程的参数类型:
- in 输入参数–向存储过程内传递值
- out 输出参数–得到存储过程里的值
例子:
①:
create or replace procedure pro_countemp2(dno in emp.deptno%type,
empcount out number)
is
begin
declare v_count number(3,0);
begin
select count(empno) into v_count from emp
where deptno=dno;
empcount:=v_count;
end;
end;
调用存储过程:
declare
v_count2 number(3,0):=0;
begin
pro_countemp2(10,v_count2);
--输出v_count的值
dbms_output.put_line(v_count2);
end;
②:
声明函数
create or replace function fun_countemp(dno emp.deptno%type)
return number
is
begin
declare v_count number(3,0):=0;
begin
select count(empno) into v_count from emp where deptno=dno;
return v_count;
end;
end;
调用函数
declare
v_empCount number(3,0):=0;
begin
--接收函数的返回值
v_empCount:=fun_countemp(10);
dbms_output.put_line(v_empCount);
end;