PL/SQL——概述与基础语法

第一个PL/SQL程序

--打开输出开关

set serveroutput on

/

 

declare

       --说明部分(变量,光标或者例外)

begin

       --程序体

       dbms_output.put_line(‘Helllo World’);

end;

/

 

dbms_output:程序包

 

--查看程序包的结构

desc dbms_output

 

PL/SQL简介

PL/SQL(Procedure language/SQL)

 

PLSQL是Oraclr对sql语言的过程化扩展

--指在SQL命令语言中增加过程处理语句(如分子支、循环等),是SQL语言具有过程处理能力。

不通过数据库的SQL扩展不同:

Oracle:PL/SQL

DB2:SQL/PL

SQL Server:Transac-SQL(T-SQL)

 

PL/SQL的程序结构

declare

       说明部分(变量说明、光标申明。例外说明)

begin

       语句序列(DML语句)

exception

       例外处理语句

end;

/

 

定义基本变量

类型:char,varchar2,date,number,Boolean,long

举例:

var1 char(15);

married Boolean :=true;

psal number(7,2);

 

引用型变量

举例:

--my_name:变量名,emp:表名,ename:表里面的字段名

--把该字段类型作为该变量的类型,该字段类型改变,引用的类型也会跟着改变。

my_name emp.ename%type;

 

set serveroutput on

 

declare

--定义引用型变量:查询并打印7839的姓名和薪水

--pename emp.ename%type;

--psal emp.sal%type;

begin

       --得到7839的姓名和薪水

select ename,sal into pename,psal from emp where empno=7839;

       --打印姓名和薪水

       dbms_output.put_line(pename||’的薪水是’||psal);

end;

/

 

记录型变量

举例:

--emp_res:变量名,emp:表名

-- 取表中一行的类型作为变量的类型,可以把记录型变量理解为一个数组,数组中的每一个元素代表表中的每一列。

emp_res emp%rowtype;

 

记录型变量的引用

emp_res.ename :=’ADAMS’;

 

例:

set serveroutput on

declare

       --定义记录型变量:代表一行

       emp_rec emp%rowtype;

begin

       --得到7839一行的信息

select * into emp_rec from emp where empno=7839;

       --打印姓名和薪水

dbms_output.put_line(emp_rec.ename||’的薪水是’||emp+rec.sal);

end;

/

 

IF语句

  1. IF 条件 THEN 语句1;

语句2;

END IF;

 

  1. IF 条件 THEN 语句序列1;

ELSE 语句序列2;

END IF;

 

  1. IF 条件 THEN 语句;

ELSIF 语句 THEN 语句;

ELSE 语句;

EDN IF;

 

IF语句案例

/*

判断用户从键盘输入的数字

  1. 如何使用if语句
  2. 接收一个键盘输入(键盘输入的都是字符串)

*/

select serveroutput on

--num:地址值,含义是:在该地址上保存了输入的值

accept num prompt ‘请输入一个数字’;

 

declare

       --定义变量保存用户从键盘输入的数字

       pnum number:=#

begin

       --执行if语句进行条件判断

if pnum=0 then dbms_output.output_line(‘您输入的数字是0’);

              elsif pnum =1 then dbms_output.output_line(‘您输入的数字是1’);

              elsif pnum=2 then dbms_output.output_line(‘您输入的数字是2’);

              else dbms_output.put_line(‘其他数字’);

end if;

end;

/

 

 

循环语句

1、

WHILE total <=25000 LOOP

total:=total+sa;ary

END LOOP;

例:

--使用while循环打印数字1-10

set serveroutput on

declare

       --定义循环变量

       pnum number:=1;

begin

       while pnum<=10 loop

       --循环体

       dbms_output.put_line(pnum);

       --使该变量+1

       pnum:=pnum+1;

       end loop;

end;

/

 

2、

Loop

EXIT[when 条件]

……

End loop;

 

例;

--使用loop循环打印1-10

select serveroutput on

declare

       --定义循环变量

       pnum number:=1;

begin

       loop

       --退出条件:循环大于10

       exit when pnum>10;

       --打印该变量的值

       dbms_output.put_line(pnum);

       --循环变量+1

       pnum:=pnum+1;

       end loop;

end;

/

 

3、

FOR I IN 1..3 LOOP

语句序列;

END LOOP;

 

例;

--使用for循环打印1-10

set serveroutput on

declare

--定义循环变量

       pnum number:=1;

begin

       for pnum in 1..10 loop

              dbms_output.put_line(pnum);

       end loop;

end;

/

猜你喜欢

转载自blog.csdn.net/qq_37117521/article/details/81712936