PL/SQL简介

PL/SQL:Procedural Laguage/SQL 在标准的SQL基础上增加了过程化处理的语言
SQL:Structured Querey Language 是一种对关系数据库管理系统(RDBMS)进行操作的标准结构化语言

SQL本身不支持对已有结果的进一步查询,PL/SQL正是一种增加了过程化处理的语言。它具有标准SQL没有的几个特征:变量、结构控制语句、自定义的存储过程和函数、对象类型

例:
1,找出名字叫小红的作家的文章的id和性别
2,如果小红是女的那么查出小红有几本书
DECLARE
/*定义变量*/
v_Sex number;
v_AutherCode varchar;
v_Archount number;
BEGIN
/*查询表中数据*/
select article_code,sex INTO
 v_AutherCode,v_Sex from auths where name='小红';

/*检查该作家是否是女作家,是的话查出文章数目*/
IF v_Sex=0 THEN
select count( article_code) INTO
v_Archount from auths
where article_code='A00001';   //A00001为查出来的文章号
END IF;
END;

PL/SQL的特性:块结构、变量和常量、循环结构、游标
1,块结构:是PL/SQL程序的基本执行单元
DECLARE
/*可定义变量、声明常量、定义游标和局部子程序  不是必须的*/
BEGIN
/*可执行的SQL语句  必不可少的*/
EXCEPTION
/*异常处理部分   可选部分*/
END;

2,变量和常量:PL/SQL和oracle之间是通过变量来实现数据交换的,变量是一个储存空间,它在程序中取出数据或传入数据到程序中
3,循环结构:循环结构用来重复的执行块中的语句
    例:将数字1到100插入到表test中
    DECLARE
    v_LoopCounter BINARY_INTEGER :=1;
    BEGIN
    LOOP
        insert into test(num) values( v_LoopCounter );
         v_LoopCounter := v_LoopCounter +1;
    EXIT where  v_LoopCounter >100;
    END LOOP;
    END;
或
    DECLARE
     v_LoopCounter BINARY_INTEGER :=1;
    BEGIN
    FOR v_LoopCounter IN (1..50) LOOP
             insert into test(num) values( v_LoopCounter );
    END LOOP;
    END;

4,游标:游标用来查询数据库中的数据,并对查询的结果进行处理。通过游标可以对查询结果中的数据进行一条一条处理
DECLARE
v_Name varchar(20);
v_Salary number(8,2);

CURSOR c_Auths is
select  name,salary from auths;

BEGIN
    OPEN c_Auths ;
LOOP
    FETCH c_Auths INTO v_Name , v_Salary ;
EXIT WHERE v_Salary %NOTFOUND;
END LOOP;
CLOSE c_Auths ;
END;



你可能感兴趣的:(pl/sql)