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;