您的位置:首页 > 数据库

PL/SQL之基础语法

2016-12-06 14:58 465 查看

1.PL/SQL的程序结构

declare
    --说明部分(变量说明、光标申明、例外说明)
begin
    --语句序列(DML语句)
exception
    --例外处理语句
end;
/

2.1说明部分-基本变量

(1).定义基本变量
(2).类型:char,varchar2,date,number,boolean,long
(3).举例:var1 char(15);
            married boolean :=true;
            psal number(7,2);
(4).eg:
--使用基本变量类型
declare
 --定义基本变量类型

--基本数据类型

pnumber number(7,2);
  --字符串变量

pname varchar2(20);
  --日期变量

pdate date;
begin
 pnumber :=1;
 dbms_output.put_line(pnumber);
 pname :='Tom';
 dbms_output.put_line(pname);
 pdate :=sysdate;
 dbms_output.put_line(pdate);
 --计算明天的日期

dbms_output.put_line(pdate+1);
end;
/

2.2说明部分-引用型变量

(1).引用型变量
(2).举例
     my_name emp.ename%type;(引用emp表中ename列的类型作为变量my_name的类型,并且变量的类型始终与其保持一致)
(3).eg:
set serveroutput on
declare
 pename emp.ename%type;
 psal emp.sal%type;
begin
 select ename,sal into pename,psalfrom emp where empno=7839;
 dbms_output.put_line(pename||'的薪水是'||psal);
 end;
 /
Tips:赋值的时候用“:=”,在select语句中可以用关键字into,连接字符串用||。

2.3说明部分-记录型变量

(1).记录型变量
(2).举例:emp_rec emp%rowtype;(记录型变量代表的是表中的一行数据,以一整行的数据作为一个变量类型,把记录型变量理解为一个数组,而在这个数组中的每一个元素代表这一行中的每一列数据)
(3).记录型变量分量的引用:emp_rec.ename :=’ADAMS’;
(4).eg:
set serveroutput on
declare
 emp_rec emp%rowtype;
begin
 select * into emp_rec from empwhere empno=7839;
 dbms_output.put_line(emp_rec.ename||'的薪水是'||emp_rec.sal);
end;
/

3.if语句的使用

(1).IF条件THEN语句1;

      语句2;
      END IF;
(2).IF条件THEN语句序列1;

      ELSE 语句序列2;

      END IF;

(3).IF条件THEN语句;

      ELSIF语句THEN语句;
      ELSE语句;
      END IF;
(4).eg:

set serveroutput on
accept num prompt'请输入一个数字';
declare
 pnum number := #
begin
 if pnum = 0 thendbms_output.put_line('您输入的数字是0');
   elsif pnum = 1 thendbms_output.put_line('您输入的数字是1');
   elsif pnum = 2 thendbms_output.put_line('您输入的数字是2');
   else dbms_output.put_line('其他数字');
 end if;
end;
/
Tips:accept(从键盘接收) num(变量名) prompt(提示)'请输入:'
num的含义是地址值,定义保存时在num前加&;
=  --判断,:= --赋值。

4.循环语句

(1).WHILE total<=25000 LOOP

      …
      total := total+salary;

      END LOOP;

      eg:
      set serveroutput on
declare
      pnum number := 1;
begin
      while pnum <=10 loop
        dbms_output.put_line(pnum);
        pnum:= pnum + 1;
      end loop;
end;
/
(2).LOOP

      EXIT[WHEN条件];
      …
      END LOOP;
      eg:
      set serveroutput on
declare
       pnum number := 1;
begin
       loop
       exit when pnum>10;
        dbms_output.put_line(pnum);
        pnum := pnum + 1;
       end loop;
end;
/
(3).FOR i IN 1..3 LOOP(in后边的必须连续)
      语句序列;
      END LOOP;
      eg:
      set serveroutput on
declare
       pnum number := 1;
begin
       for pnum in 1..10 loop
        dbms_output.put_line(pnum);
       end loop;
end;
/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数据库 oracle PLSQL