八、PL/SQL编程

先来看一个简单的编程:

declare             //定义变量的开头关键字declare
    --员工编号      //--为PL/SQL的注释开头
    var_empno number; //初始化变量var_empno 数据类型number
    --工资
    var_sal number;
begin    //程序开始的关键字begin
    --获得员工编号
    var_empno:=&var_empno; //&var_empno提示用户输入值 var_empno:=&var_empno把获取到的值赋值给var_empno
    --根据编号获得其工资
    select sal into var_sal from scott.emp where empno=var_empno; //select 查询的内容 into(赋值给) var_sal ,其中查到的行数要与赋值的个数保持一致!
    --判断工资增长后是否超过3200
    if var_sal*1.1<=3200 then //分支语句结构:if 判断条件 then end if;
        --更新工资
        update scott.emp set sal=sal*1.1 where empno=var_empno; //更新对应的值
        commit; //提交修改后的数据
    end if;
end; //程序结束的关键字end 程序最后要有;号

上面就是一个简单的PL/SQL编程,主要功能:根据用户输入的员工编号进行涨工资10%,但是如果增长后的工资超过3200则不予增长。

13.1 变量与数据类型

declare //定义部分,定义变量
变量名 数据类型 := 初值 ; 
变量名 数据类型  default  初值 ;
constant 表示定义的是常量,必须先要初始化它
var_empno number := 45 ; 把45赋值给var_empno

变量的标准数据类型: number数字类型,int整形,pls_integer整数型,char(n)定长字符,varchar2(n)变长字符,date('yyyy-dd-mm hh24:mi;ss')日期型,boolean布尔型。

13.2流程控制语句

dbms_output.put_line('hello world!'); 输出文本信息

begin
...
end
程序开始与结束的标志。

select语句赋值给变量语法:
select <查询的内容> into(赋值给) <变量> ;
其中查到的行数要与赋值的个数保持一致!

条件语句

if <表达式> then
    语句块;
end if;
//if else结构
if <表达式> then
    语句块1;
else
    语句块2;
end if;
//if elseif else 结构
if <表达式1> then
       语句块1;
elsif <表达式2> then
       语句块2;
else
       语句块3;
end if;

case语句

case <表达式>
    when <表达式1> then 语句块1;
    when <表达式2> then 语句块2;
      ……
    when <表达式n> then 语句块n;
   [ else 语句块 n+1 ]
end ;

循环语句

loop
  循环体; 
  exit when 循环退出条件
end loop;

while 循环条件
loop 
    循环体;
end loop;

for 循环控制变量 in [reverse] 循环下限 .. 循环上限 
loop
  循环体;
end loop

for循环展示

declare 
   sum_num number := 0; //sum_number赋值为0
begin //程序开始
   for i in 1..100 //for循环 i i从1到100
loop //循环标志
     sum_num := sum_num + i; //循环体
   end loop; //结束循环
   dbms_output.put_line(sum_num); //输出结果
end; //结束标志