PL/SQL编程

来源:互联网 发布:vb label背景透明 编辑:程序博客网 时间:2024/06/06 05:45

PL/SQL编程:过程语言和结构化查询语言(SQL)组合而成

1.语法:
  declare
      声明变量
  begin
      执行代码
      异常处理
  end

declarebegin--在java中   System.out.println("Hello world");dbms_output.put_line('hello oracle');end;

  --注意:

1、如果没有需要声明的变量,那么declare可以省略,
 2、在begin和end之间必须有代码。

例:声明两个变量,a,b,求a和b的和,并打印出来

declare       v_a number(5):= 4;      v_b number(5):= 2;      v_c number(5);  begin      v_c := v_a+v_b;      dbms_output.put_line('a+b='||v_c);  end;
2.动态赋值:&

 declare       v_a number(5):=&请输入a的值;      v_b number(5):=&请输入b的值;      v_c number(5);            v_d varchar2(20):='&请输入d的值';        begin      v_c := v_a+v_b;      dbms_output.put_line('a+b='||v_c);       dbms_output.put_line('d:'||v_d);  end;
3.into 关键字

例:获取sid=1的学生的姓名,并打印出来

declarev_sid number(5):= 1;v_name varchar2(20);begin--在PL/SQL块中的select语句中必须使用into才能赋值select sname into v_name from t_student where sid = v_sid;dbms_output.put_line(v_name);end;
注意:--如果有多个字段需要查询赋值,在into语句的左侧列出需要查询的字段,在into的右侧一一对应需要接受的变量名。
--声明变量的时候,声明变量的类型的大小容易溢出
4.%type--字段(属性)类型      %rowtype--行类型

例:

declarev_sid number(30):= 1;v_name t_student.sname%type;beginselect sname into v_name from t_student where sid = v_sid;dbms_output.put_line(v_name);end;

declarev_sname t_student.sname%type;v_sage t_student.sage%type;v_ssex t_student.ssex%type;v_saddress t_student.saddress%type;v_stu t_student%rowtype;beginselect * into  v_stu from t_student where sid = 1;dbms_output.put_line(v_stu.sname||'-------'||v_stu.sage||'-------'||v_stu.ssex||'-------'||v_stu.saddress);end;
5.分支语句:
if语句: if 条件 then...else ... end if;

例:

declarev_ssex t_student.ssex%type;beginselect ssex into v_ssex from t_student where sid =1;if v_ssex=1 then dbms_output.put_line('男');elsif v_ssex =2 then dbms_output.put_line('女');else dbms_output.put_line('不详');end if;dbms_output.put_line('程序结束');end;
6.case 语句
语法:
case when  条件 then .. when 条件...else ...end case;

declarev_sage t_student.sage%type;beginselect sage into v_sage from t_student where sid = 1;case when v_sage<18 then dbms_output.put_line('未成年');      when v_sage=18 then dbms_output.put_line('刚刚成年');      else  dbms_output.put_line('成年人'); end case;end;
7.循环:
loop
    exit when 退出循环的条件
end loop;

declare     v_i number(5);begin    v_i := 1;    while v_i<10  --循环的条件         loop             dbms_output.put_line(v_i);             v_i :=v_i+1;    end loop;end;