设为首页 收藏本站
查看: 729|回复: 0

[经验分享] Oracle PL/SQL语言基础2

[复制链接]

尚未签到

发表于 2016-8-3 06:14:53 | 显示全部楼层 |阅读模式
LOB数据类型
 
  LOB(大对象,Large object) 数据类型用于存储类似图像,声音这样的大型数据对象,LOB数据对象可以是二进制数据也可以是字符数据,其最大长度不超过4G。LOB数据类型支持任意访问方式,LONG只支持顺序访问方式。LOB存储在一个单独的位置上,同时一个"LOB定位符"(LOB locator)存储在原始的表中,该定位符是一个指向实际数据的指针。在PL/SQL中操作LOB数据对象使用ORACLE提供的包DBMS_LOB.LOB数据类型可分为以下四类:
 
  . BFILE
  . BLOB
  . CLOB
  . NCLOB
 
  操作符
 
  与其他程序设计语言相同,PL/SQL有一系列操作符。操作符分为下面几类:
 
  . 算术操作符
 
  . 关系操作符
 
  . 比较操作符
 
  . 逻辑操作符
 
  算术操作符如表4所示
 
operator
  operation
  
+  加
  -  减
  /  除
  
*  乘 
** 乘方
  
 
  关系操作符主要用于条件判断语句或用于where子串中,关系操作符检查条件和结果是否为true或false,表5是PL/SQL中的关系操作符
 
operator
  operation
  

  小于操作符
  
<= 
  小于或等于操作符
  

  大于操作符
  
>=
  大于或等于操作符
  

  等于操作符 
  
!= 
  不等于操作符
  
<> 
  不等于操作符
  
:= 
  赋值操作符
  
 
  表6 显示的是比较操作符
 
operator 
  operation
  
IS NULL
  如果操作数为NULL返回TRUE
  
LIKE
  比较字符串值
  
BETWEEN
  验证值是否在范围之内
  
IN
  验证操作数在设定的一系列值中
  
 
  表7.8显示的是逻辑操作符
 
operator
  operation
  
AND 
  两个条件都必须满足
  
OR
  只要满足两个条件中的一个
  
NOT
  取反
  
 
  执行部分
 
  执行部分包含了所有的语句和表达式,执行部分以关键字BEGIN开始,以关键字EXCEPTION结束,如果EXCEPTION不存在,那么将以关键字END结束。分号分隔每一条语句,使用赋值操作符:=或SELECT INTO或FETCH INTO给每个变量赋值,执行部分的错误将在异常处理部分解决,在执行部分中可以使用另一个PL/SQL程序块,这种程序块被称为嵌套块
 
  所有的SQL数据操作语句都可以用于执行部分,PL/SQL块不能再屏幕上显示SELECT语句的输出。SELECT语句必须包括一个INTO子串或者是游标的一部分,执行部分使用的变量和常量必须首先在声明部分声明,执行部分必须至少包括一条可执行语句,NULL是一条合法的可执行语句,事物控制语句COMMIT和ROLLBACK可以在执行部分使用,数据定义语言(Data Definition language)不能在执行部分中使用,DDL语句与EXECUTE IMMEDIATE一起使用或者是DBMS_SQL调用。
 
  执行一个PL/SQL块
 
  SQL*PLUS中匿名的PL/SQL块的执行是在PL/SQL块后输入/来执行,如下面的例子所示:
 
declare 
 v_comm_percent constant number:=10;
begin
 update emp
 set comm=sal*v_comm_percent
 where deptno=10;
 end
SQL> /
PL/SQL procedure successfully completed.
 
SQL>
  
 
  命名的程序与匿名程序的执行不同,执行命名的程序块必须使用execute关键字:
 
create or replace procedure update_commission
 (v_dept in number,v_pervent in number default 10) is 
begin
 update emp
 set comm=sal*v_percent
 where deptno=v_dept;
end
 
SQL>/
 
Procedure created
 
SQL>execute update_commission(10,15);
 
PL/SQL procedure successfully completed.
 
SQL> 
  
 
  如果在另一个命名程序块或匿名程序块中执行这个程序,那么就不需要EXECUTE关进字。
 
declare
 v_dept number;
begin
 select a.deptno
 into v_dept
 from emp a
 where job='PRESIDENT'
 update_commission(v_dept);
end
SQL>/
 PL/SQL procedure successfully completed
SQL>
  
 
 控制结构
 
  控制结构控制PL/SQL程序流程的代码行,PL/SQL支持条件控制和循环控制结构。
 
  语法和用途
 
   IF..THEN
 
  语法:
 
IF condition THEN
 Statements 1;
 Statements 2;
 ....
END IF 
  
 
  IF语句判断条件condition是否为TRUE,如果是,则执行THEN后面的语句,如果condition为false或NULL则跳过THEN到END IF之间的语句,执行END IF后面的语句。
 
  IF..THEN...ELSE
 
  语法:
 
IF condition THEN
 Statements 1;
 Statements 2;
 ....
ELSE
 Statements 1;
 Statements 2;
 ....
END IF 
  
 
  如果条件condition为TRUE,则执行THEN到ELSE之间的语句,否则执行ELSE到END IF之间的语句。
 
  IF 可以嵌套,可以在IF 或IF ..ELSE语句中使用IF或IF..ELSE语句。
 
if (a>b) and (a>c) then
  g:=a;
else
  g:=b;
  if c>g then
   g:=c;
  end if
end if
  
 
  IF..THEN..ELSIF
 
  语法:
 
IF condition1 THEN
 statement1;
ELSIF condition2 THEN
 statement2;
ELSIF condition3 THEN
 statement3;
ELSE
 statement4;
END IF;
 statement5;
  
 
  如果条件condition1为TRUE则执行statement1,然后执行statement5,否则判断condition2是否为TRUE,若为TRUE则执行statement2,然后执行statement5,对于condition3也是相同的,如果condition1,condition2,condition3都不成立,那么将执行statement4,然后执行statement5。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-252206-1-1.html 上篇帖子: 步步为营完全删除Oracle数据库的方法 下篇帖子: ORACLE SQL性能优化系列3(转)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表