讲讲pl/sql编程基础. pl/sql(Procedural Language/SQL,过程语言/SQL)是结合了Oracle过程语言和结构化查询语言(SQL)的一种扩展语言.pl/sql支持多种数据类型,可以使用条件语句和循环语句等控制结构.pl/sql可用于创建存储过程、触发器和程序包等,也用来处理业务规则、数据库事件或SQL命令的执行添加程序逻辑. pl/sql优点如下: 1.支持SQL SQL是访问数据库的标准语言,通过使用SQL命令,用户可以轻松地操纵存储在关系数据库中的数据.PL/SQL允许使用所有的SQL数据操纵命令、游标控制命令、事务控制命令、SQL函数、运算符和伪列,因此可以更加灵活而有效地操纵表中的数据. 2.支持面向对象编程(OOP) 3.更好的性能 SQL是一种非过程语言,在此语言中一次只能执行一条语句,因此在连续的语句之间没有关联.使用这PL/SQL则可以一次处理整个语句块.这减少了在应用程序和Oracle服务器之间进行通信所花费的时间,从而提高性能.过程调用是快速而高效的,因为PL/SQL存储过程编译一次后,是以可执行的形式存储的. 4.可移植性 5.与SQL集成 6.安全性 pl/sql块: pl/sql是一种块结构的语言,它将一组语句放在一个块中.构成PL/SQL程序的基本单位是逻辑块(如过程、函数或匿名块),该逻辑块可以包含任何数量的嵌套子块,每个逻辑块对应要解决的问题或子问题.PL/SQL块将逻辑上相关的声明和语句组合一起.在PL/SQL块中可以使用select、insert、update、delete等DML语句、事务控制语句以及SQL函数等. pl/sql块共分为3个部分,具体内容如下. 1.声明部分:声明块中使用的变量、游标和自定义异常.这些声明的作用域仅限于它们所在的块. 2.可执行部分:执行命令并操作在声明部分声明的变量和游标.PL/SQL可执行部分是必选项. 3.异常处理部分:处理执行块时引发的异常. 如下一个结构: declare .... begin ....... exception ..... end;
PL/SQL对大小写不第三,但是用户和用户的开发团队应该选择一个的编码标准,以确保最好地使用共享池.
PL/SQL中一些复合符号的含义如下: := 赋值操作符 || 连接操作符 -- 单行注解 /*,*/多行注解 <<,>> 标签分隔符 .. 范围操作符 ** 求幂操作符
声明变量: 变量名 类型:=值; 声明常量: 常量名 constant 数据类型:=值; OK,下面来看个实例: declare s_id number; s_name varchar2(20); begin select empno,ename into s_id,s_name from emp where empno=7369; dbms_output.put_line('编号为'||s_id||'姓名为'||s_name); end;
pl/sql提供的4种内置数据类型: *标量数据类型:此类型包括数字,字符,日期时间,布尔型的数据类型 *LOB类型:此类型包括bfile,blob,clob. bfile数据类型用于将大型二进制对象存储在操作系统中. blob数据类型用于将大型二进制数据存储在数据库中. clob数据类型用于将大型字条数据存储在数据库中. *属性类型: %type与%rowtype %type引用某个变量或数据库的数据类型来声明变量.看实例: declare s_id number; s_name varchar2(20); begin s_id:=&abc; select ename into s_name from emp where empno=s_id; dbms_output.put_line(s_name); end; %rowtype提供表示表中一行的记录类型.记录类型可以存储从表中选择或由游标提取的整行数据. 简单实例: declare s_id number; s_record emp%rowtype; begin s_id:=&abc; select * into s_record from emp where empno=s_id; dbms_output.put_line('姓名为'||s_record.ename||'工资为'||s_record.sal); end;
OK,控制结构,PL/SQL程序可通过控制结构来控制命令执行的流程. 控制结构有如下三种: 1.条件控制 条件控制包括IF语句和case语句. IF语句有三种 (1)IF-then语句,实例如下: begin if 2>1 then dbms_output.put_line('为真'); end if; end; (2)IF-then-else语句,实例如下: declare s_id number; begin s_id:=&abc; --此处为给用户输入参数 if s_id=0 then dbms_output.put_line('关机状态...'); else dbms_output.put_line('开机状态'); end if; end; (3)IF-then-ELSIF语句,实例如下: declare s_id number; begin s_id:=&abc; if s_id>=80 then dbms_output.put_line('优异'); elsif s_id>=70 then dbms_output.put_line('一般'); elsif s_id>=60 then dbms_output.put_line('及格'); else dbms_output.put_line('不及格'); end if; end; case语句,与C语言中case差不多,在这就不举出具体实例. 2.循环控制 create table hh(id number)--创建表
declare s_id number:=1; begin while s_id<=20 loop insert into hh values(s_id); select count(*) into s_id from hh; end loop; end; 3.顺序控制 顺序控制用于按顺序执行语句.顺序控制包括: (1).goto语句 无条件的将控制权转到标签指定的语句.标签是双尖括号括起来的标识符,在pl/sql块内必须具有唯一的名称,标签后必须紧跟可执行语句或pl/sql块.goto语句不能跳转到IF语句、case语句、Loop语句或子块中. (2)null语句. 什么也不做,只是将控制权转到下一条语句. 下面一个goto与null结合的实例: declare s_sal emp.sal%type; begin s_sal:=&输入薪金; select sal into s_sal from emp where empno=7782; if s_sal<1000 then goto updation; else goto quit; end if; <> update emp set sal=sal*3 where empno=7782; <> null; end;
原文:http://hujing1229.blog.ccidnet.com/blog-htm-do-showone-uid-60604-type-blog-itemid-185153.html
|