欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    PLSQL基础培训.ppt

    • 资源ID:5444133       资源大小:352KB        全文页数:55页
    • 资源格式: PPT        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    PLSQL基础培训.ppt

    PL/SQL基础培训 刘丹,CUC-AS1-N3,PL/SQL语言的编程规范Oracle数据库的基本数据类型和函数应用PL/SQL语言编写基本的sql,通过本章的学习应该掌握:,一、PL/SQL语言编程规范,1)命名语言-命名使用能表述对象意义的单词或者约定俗成的符号,不允许使用中文或者特殊符号。单词分隔-命名的各单词使用下划线进行分隔。保留字-命名禁止使用sql保留字(可以在v$reserved_words视图中查找所有的保留字)。命名长度-限制在30个字符内(含前缀)。,2)命名规范普通变量-前缀为v_,存放字符、数字、日期型变量。游标变量-前缀为cur_,存放游标记录集。存储过程-前缀为p_,按照业务操作命名。函数-前缀为f_,按照业务操作命名。包-前缀为pkg_,按照业务操作集合命名。触发器-前缀为trig_,触发器名是前缀+表名+触发器名索引-前缀为IDX_,索引名是前缀+表名+索引字段,3)使用绑定变量 当一个sql语句提交后,oracle会首先检查一下共享缓冲池(shared pool)里有没有与之完全相同的语句,如果有的话只须执行软分析即可,否则就得进行硬分析。而唯一使得oracle能够重复利用执行计划的方法就是采用绑定变量。绑定变量的实质就是用于替代sql语句中的常量的替代变量。绑定变量能够使得每次提交的sql语句都完全一样 硬解析需要经解析,制定执行路径,优化访问计划等许多的步骤.如果你的查询本身耗时就很长,就没必要绑定变量了,因为解析的消耗微乎其微 select sql_text,parse_calls from v$sql where sql_text like UPDATE AA1%eg:ls_sql:=update AA1set status=1,sale_trade_id=|v_trade_id|,sale_date=sysdate where card_no=:1;execute immediate ls_sql using vi_card_no;,PL/SQL 语言,1)基本数据类型VARCHAR2 变长字符串,最长为4000字符。NUMBER 数值型。LONG 变长字符数据,最长为2G字节。DATE 日期型。RAW 二进制数据,最长为255字节。LONG RAW 变长二进制数据,最长为2G字节。CHAR 定长字符数据,最长为255。LOB 大对象”数据类型 CLOB 可用于存储非结构化的XML文档。BLOB 可以存储较大的二进制对象,如图形、视频剪辑和声音剪辑等。,二、基本数据类型与函数,PL/SQL 语言,2)函数,单行字符串函数-ASCII(),INSTR(),LENGTH(),UPPER(),LPAD(),LTRIM(),RPAD(),RTRIM(),REPLACE(),SUBSTR(),TRIM(),CONCAT()单行数字函数-ABS(),ACOS(),ASIN(),ATAN(),CEIL(),COS(),LOG(),MOD(),ROUND(),SIN(),TRUNC()单行日期函数-ADD_MONTHS(),LAST_DAY(),MONTHS_BETWEEN(),NEW_TIME(),NEXT_DAY(),ROUND(),SYSDATE,TRUNC(),TO_CHAR(),TO_DATE(),TO_NUMBER()其他单行函数-BFILENAME(),DECODE(),DUMP(),GREATEST(),LEAST(),USERENV(),NVL()NULL和单行函数-NULL值表示一个未知数据或者一个空值,算术操作符的任何一个操作数为NULL值,结果均为NULL值,这个规则也适合很多函数,只有CONCAT,DECODE,DUMP,NVL,REPLACE在调用了NVL参数时可以返回非NULL值。,a、单行函数-返回基于单行的单一结果,PL/SQL 语言,又名集合函数-AVG(),COUNT(),MAX(),MIN(),STDDEV(),SUM(),VARIANCE()数据进行分组-GROUP BY Oracle的GROUP BY语句除了最基本的语法外,还支持ROLLUP和CUBE语句。如果是ROLLUP(A,B,C)的话,首先会对(A、B、C)进行GROUP BY,然后对(A、B)进行GROUP BY,然后是(A)进行GROUP BY,最后对全表进行GROUP BY操作。如果是GROUP BY CUBE(A,B,C),则首先会对(A、B、C)进行GROUP BY,然后依次是(A、B),(A、C),(A),(B、C),(B),(C),最后对全表进行GROUP BY操作。grouping_id()可以美化效果,b、组函数-返回基于多行的单一结果,c、嵌套函数-函数可以嵌套,优先权基于位置,遵循由内到外,由左到右的原则。,PL/SQL 语言,Oracle扩展PL/SQL简介,PL/SQL是Oracle对SQL规范的扩展,是一种块结构语言,即构成一个PL/SQL程序的基本单位(过程、函数和无名块)是逻辑块,可包含任何数目的嵌套了快。这种程序结构支持逐步求精方法解决问题。一个块(或子块)将逻辑上相关的说明和语句组合在一起,其形式为:DECLARE-说明 BEGIN-语句序列 EXCEPTION-例外处理程序 END;,三、应用PL/SQL语言编写基本的sql,PL/SQL 语言,控制语句1)分支语句:IF condition THENSequence_of_statements;END IF;IF condition THENSequence_of_statement1;ELSESequence_of_statement2;END IF;,PL/SQL 语言,2)循环语句:LOOPSequence_of_statements;IF condition THENEXIT;END IF;END LOOP;WHILE condition LOOPSequence_of_statements;END LOOP;FOR counter IN lower_bound.higher_bound LOOPSequence_of_statements;END LOOP;,PL/SQL 语言,数据操纵语言命令(DML),用于在关系数据库对象中操纵数据INSERT insert into tab_name(col1,col2)values(1,2);UPDATE update tab_name a set a.col1=1where col2=1;DELETE delete from tab_name where col1=1;,PL/SQL 语言,数据控制语言命令(DCL)用于创建与用户访问相关的对象,也控制着用户的权限分配ALTER PASSWORD改变口令GRANT为用户授予特权REVOKE从用户处收回特权,事物控制命令,Commit 完成事务,数据修改成功并对其他用户开放。Rollback 撤销事务,撤销所有操作。rollback to savepoint 撤销在设置的回滚点以后的操作。set transaction响应事务或语句的一致性,特别对于事务使用回滚段。,PL/SQL 语言,数据定义语言命令(DDL),Create-创建某个对象Create table tab_name(col varchar(2)not null);Drop-删除某个对象Drop table(view)tab_name;Grant-赋予权限命令Grant update on tab_name to user_name;Revoke-收回权限命令Revoke update on tab_name from user_name;,PL/SQL 语言,SQL中操作符的使用,定义:操作符是保留的字或字符,主要用于比 较和算术运算。分类:比较操作符,逻辑操作符和算术运算符。1、比较操作符包括:=,,=。注意比较双方的数据类型。2、算术运算符包括:+,-,*,/等。与数学运算规则一致。,PL/SQL 语言,SQL中逻辑操作符的使用,IS NULL(是否为空)BETWEEN(在某两个值之间)IN(一系列值中)LIKE(相似值的比较)EXITS(是否存在符合条件的数据)ALL/ANY(一组数据的所有/其中的任何一个)AND/OR(逻辑与/或),PL/SQL 语言,子程序1)存储过程:CREATE PROCEDURE 过程名(参数说明1,参数说明2,。)IS局部说明BEGIN执行语句;END 过程名;2)存储函数:CREATE FUNCTION 函数名(参数说明1,参数说明2,。)RETURN 类型 IS局部说明BEGIN执行语句;END 函数名;,PL/SQL 语言,应用PL/SQL语言编写sql,sql语句不区分大小写sql语句可以由一行或者多行组成在一行中关键字不能缩写或者被拆开子句通常书写在不同的行上采用行缩进来增强程序的阅读性,PL/SQL 语言,CASE表达式,CASE WHEN comparison_expr1 THEN return_expr1 WHEN comparison_expr2 THEN return_expr2 WHEN comparison_exprn THEN return_exprn ELSE else_exprEND,PL/SQL 语言,DECODE表达式,DECODE(col|expression,search1,result1,search2,result2,.,default)DECODE语句=IF-THEN-ELSE的实现,PL/SQL 语言,%type用法,declaremyid aa2.MDATE%type;myname aa2.SNUM%type;beginselect MDATE,SNUM into myid,myname from aa2 where MDATE=20120801;dbms_output.put_line(myid);dbms_output.put_line(myname);end;/当表结构字段类型或者长度变化后,程序中无需在变,PL/SQL 语言,%rowtype用法,declaretype type_dept is table of aa2%rowtype index by binary_integer;tb type_dept;begintb(1).MDATE:=20120812;tb(1).SNUM:=12;tb(2).MDATE:=20120813;tb(2).SNUM:=13;dbms_output.put_line(tb(1).MDATE|tb(1).SNUM);dbms_output.put_line(tb.COUNT);end;/,PL/SQL 语言,TYPE用法,相当于结构体,declarelv_order_date DAte:=sysdate;lv_last_txt varchar2(5)default 001;lv_last varchar2(10)not null:=us;TYPE type_test is record(MDATE aa2.MDATE%type,SNUM aa2.SNUM%type);rec type_test;beginlv_order_date:=sysdate;dbms_output.put_line(lv_last);select MDATE,SNUM into rec from aa2 where MDATE=20120801;dbms_output.put_line(rec.MDATE);dbms_output.put_line(rec.SNUM);end;,PL/SQL 语言,游标的使用:,declare-类型定义 cursor c_job is select MDATE,SNUM from aa2;-定义一个游标变量 c_row c_job%rowtype;begin for c_row in c_job loop dbms_output.put_line(c_row.MDATE|-|c_row.SNUM);end loop;end;,PL/SQL 语言,游标的使用:Fetch游标,使用的时候必须要明确的打开和关闭,declare-类型定义 cursor c_job is select MDATE,SNUM from aa2;-定义一个游标变量 c_row c_job%rowtype;begin open c_job;loop-提取一行数据到c_row fetch c_job into c_row;-判读是否提取到值,没取到值就退出-取到值c_job%notfound 是false-取不到值c_job%notfound 是true exit when c_job%notfound;dbms_output.put_line(c_row.MDATE|-|c_row.SNUM);end loop;-关闭游标 close c_job;end;,PL/SQL 语言,游标的使用:别的写法,declare-类型定义 cursor c_job is select MDATE,SNUM from aa2;-定义一个游标变量 c_row c_job%rowtype;begin open c_job;-给第一行数据 fetch c_job into c_row;while c_job%found loop dbms_output.put_line(c_row.MDATE|-|c_row.SNUM);-给下一行喂数据 fetch c_job into c_row;end loop;-关闭游标 close c_job;end;,PL/SQL 语言,游标的使用:UPDATE写法,declare-类型定义 cursor c_job is select MDATE,SNUM from aa2 for update OF SNUM;-定义一个游标变量 c_row c_job%rowtype;begin open c_job;-给第一行数据 fetch c_job into c_row;while c_job%found loop UPDATE aa2 SET SNUM=SNUM+1 WHERE CURRENT OF c_job;-给下一行喂数据 fetch c_job into c_row;end loop;-关闭游标 close c_job;commit;end;,PL/SQL 语言,exception用法,declare ex Exception;v_MDATE aa2.mdate%type;begin where MDATE=20120812;*/select MDATE into v_MDATE from aa2/*where MDATE=20120814*/;if SQL%NOTFOUND Then Raise ex;end if;commit;Exception When ex then dbms_output.put_line(update failed.);rollback;when NO_DATA_FOUND then dbms_output.put_line(no record is found);when TOO_MANY_ROWS then dbms_output.put_line(too many rows are selected);when OTHERS then dbms_output.put_line(error message:|SQLERRM);rollback;end;/,PL/SQL 语言,触发器注意点,触发器不接受参数。一个表上最多可有12个触发器,但同一时间、同一事件、同一类型的触发器只能有一个。并各触发器之间不能有矛盾。在一个表上的触发器越多,对在该表上的DML操作的性能影响就越大。触发器最大为32KB。若确实需要,可以先建立过程,然后在触发器中用CALL语句进行调用。在触发器的执行部分只能用DML语句(SELECT、INSERT、UPDATE、DELETE),不能使用DDL语句(CREATE、ALTER、DROP)。触发器中不能包含事务控制语句(COMMIT,ROLLBACK,SAVEPOINT)。因为触发器是触发语句的一部分,触发语句被提交、回退时,触发器也被提交、回退了。在触发器主体中调用的任何过程、函数,都不能使用事务控制语句。在触发器主体中不能申明任何Long和blob变量。新值new和旧值old也不能向表中的任何long和blob列。不同类型的触发器(如DML触发器、INSTEAD OF触发器、系统触发器)的语法格式和作用有较大区别。,PL/SQL 语言,触发器使用,CREATE OR REPLACE TRIGGER tr_aa2AFTER(BEFORE)INSERT OR DELETE OR UPDATE(一个是在记录操作之前触发,一个是在记录操作之后触发)ON aa2 FOR EACH ROW(去掉 FOR EACH ROW,行触发器及语句触发器)BEGIN IF UPDATING(snum)THEN RETURN;END IF;if:new.mdate=20120814 then return;else if inserting then insert into aa3 values(:new.mdate,:new.snum);end if;if updating then insert into aa3 values(:old.mdate,:old.snum);end if;end if;END;,PL/SQL 语言,视图使用,视图是存储在数据库中的预先定义好的查询,具有表的外观,可以象表一样对其进行存取,但不占据物理存储空间create or replace view view_aa2 asselect MDATE,SNUM from aa2group by MDATE,SNUM;视图是可以被更新的,但必须:view的字段只涉及一个表。2.如果涉及多个表的话,被(涉及到的)view列所映射table列(或列的组合)必须是有主健或者unique约束的3.强制执行,方法是加上hint/*+BYPASS_UJVC*/视图中使用触发器create or replace trigger trg_view_aa2instead of update on view_aa2for each rowbeginupdate aa2 set snum=15;end;,PL/SQL 语言,同义词使用,create or replace synonym md_area for itg1_admin.md_area;oracle同义词有两种类型,分别是公用Oracle同义词与私有Oracle同义词此外如果要创建一个远程的数据库上的某张表的同义词,需要先创建一个Database Link(数据库连接)来扩展访问,然后在使用如下语句创建数据库同义词:create synonym table_name fortable_nameDB_Link;,PL/SQL 语言,序列使用,CREATE SEQUENCE emp_sequenceINCREMENT BY 1 每次加几个START WITH 1 从1开始计数NOMAXVALUE 不设置最大值NOCYCLE 一直累加,不循环CACHE 10NOORDER;并行时取得序列的顺序一旦定义了emp_sequence,你就可以用CURRVAL,NEXTVALCURRVAL=返回 sequence的当前值NEXTVAL=增加sequence的值,然后返回 sequence 值create sequence SEQ_TESTminvalue 1maxvalue 999999999999999999999999999start with 1increment by 1cache 10;如果指定CACHE值,ORACLE就可以预先在内存里面放置一些sequence,这样存取的快些。cache里面的取完后,oracle自动再取一组 到cache。使用cache或许会跳号,比如数据库突然不正常down掉(shutdown abort),cache中的sequence就会丢失.所以可以在create sequence的时候用nocache防止这种情况,PL/SQL 语言,主键,约束,主键:PRIMARY KEY 主键约束惟一地标识一行。作为一个可以被外键有效引用的对象外键:FOREIGN KEY 外键约束外键是该表是另一个表之间联接的字段 外键必须为另一个表中的主键 外键的用途是确保数据的完整性唯一约束:UNIQUE 唯一约束唯一约束保证在一个字段或者一组字段里的数据与表中其它行的数据相比是唯一的条件约束CHECK 条件约束 指定该列是否满足某个条件ALTER TABLE student ADD CONSTRAINT uk_student UNIQUE(ment);ALTER TABLE student DROP CONSTRAINT uk_student;ALTER TABLE studentADD CONSTRAINT stu_class FOREIGN KEY(classid)REFERENCES class(cid);ALTER TABLE student ADD CONSTRAINT student_age_ck CHECK(age18);,PL/SQL 语言,索引,(1)*Tree索引。Create index indexname on tablename(columnnamecolumnname.)(2)反向索引。Create index indexname on tablename(columnnamecolumnname.)reverse(3)降序索引。Create index indexname on tablename(columnname DESCcolumnname.)(4)位图索引。Create BITMAP index indexname on tablename(columnnamecolumnname.)(5)函数索引。Create index indexname on tablename(functionname(columnname),PL/SQL 语言,存储函数和过程及包,1 创建存储过程和函数。2 正确使用系统级的异常处理和用户定义的异常处理。3 建立和管理存储过程和函数。4,通过使用包,就可以分类管理过程和函数。使用包还有一个好处,就是可以在包中定义自定义类型,从而在过程和函数可以直接用于定义变量,PL/SQL 语言,分区,范围分区:create table Partition_Test(PID number not null)partition by range(PID)(partition part_01 values less than(50000)tablespace dinya_space01,partition part_02 values less than(100000)tablespace dinya_space02,partition part_03 values less than(maxvalue)tablespace dinya_space03)Hash分区(散列分区):partition by hash(PID)(partition part_h01 tablespace dinya_space01,partition part_h02 tablespace dinya_space02,partition part_h03 tablespace dinya_space03)List分区(列表分区):PARTITIONBYLIST(sales_state)(PARTITIONsales_westVALUES(California,Hawaii)COMPRESS,范围-散列分区(复合分区)partitionbyrange(PDATA)subpartitionbyhash(PID)subpartitions3storein(dinya_space01,dinya_space02,dinya_space03)(partitionpart_fh01valueslessthan(to_date(2004-01-01,yyyy-mm-dd)tablespacedinya_space01,partitionpart_fh02valueslessthan(to_date(2008-01-01,yyyy-mm-dd)tablespacedinya_space02,partitionpart_fh03valueslessthan(maxvalue)tablespacedinya_space03)范围-列表分区(复合分区),PL/SQL 语言,分区,增加一个分区altertablePart_Taddpartitionpart_05valueslessthan(10020)tablespacedinya查询分区数据select*fromPartition_FHTestpartition(part_fh02)t(delete,update)Tuncate分区数据 alter table xx truncate partition update global indexes(rebuild index)合并分区altertablePartition_HBmergepartitionspart_01,part_02intopartitionpart_02;拆分分区-spiltpartition分区名at(这里是一个临界区,比如:50000就是说小于50000的放在part_01,而大于50000的放在part_02中)altertablePartition_HBsplitPartitionpart_02at(50000)into(Partitionpart_01tablespacedinya_space01,Partitionpart_02tablespacedinya_space02);更改分区名altertablePartition_HBrenamePartitionpart_01_testtopart_02;,PL/SQL 语言,使用DBMS_JOB 软件包定时调度,SQL variable n number;begin dbms_job.submit(job=:n,what=PKP_TEST1.p_stat_test1;,next_date=to_date(01-09-2012 04:00:00,dd-mm-yyyy hh24:mi:ss),interval=sysdate+1);Commit;end;/或者:SQLvariable job_card_sync numberexecute dbms_job.submit(:job_card_sync,PKP_TEST1.p_stat_test1;,sysdate+1/48,SYSDATE+1);commit;,PL/SQL 语言,分析函数,ORACLE提供了26个分析函数,按功能分5类分析函数分类等级(ranking)函数:用于寻找前N种查询开窗(windowing)函数:用于计算不同的累计,如SUM,COUNT,AVG,MIN,MAX等,作用于数据的一个窗口上例:sum(t.sal)over(order by t.deptno,t.ename)running_total,sum(t.sal)over(partition by t.deptno order by t.ename)department_total制表(reporting)函数:与开窗函数同名,作用于一个分区或一组上的所有列例:sum(t.sal)over()running_total2,sum(t.sal)over(partition by t.deptno)department_total2制表函数与开窗函数的关键不同之处在于OVER语句上缺少一个ORDER BY子句!LAG,LEAD函数:这类函数允许在结果集中向前或向后检索值,为了避免数据的自连接,它们是非常用用的.VAR_POP,VAR_SAMP,STDEV_POPE及线性的衰减函数:计算任何未排序分区的统计值,PL/SQL 语言,分析函数,2)PARTITION子句按照表达式分区(就是分组),如果省略了分区子句,则全部的结果集被看作是一个单一的组3)ORDER BY子句分析函数中ORDERBY的存在将添加一个默认的开窗子句,这意味着计算中所使用的行的集合是当前分区中当前行和前面所有行,没有ORDER BY时,默认的窗口是全部的分区在Order by 子句后可以添加nulls last,如:order by comm desc nulls last表示排序时忽略comm列为空的行.4)WINDOWING子句用于定义分析函数将在其上操作的行的集合Windowing子句给出了一个定义变化或固定的数据窗口的方法,分析函数将对这些数据进行操作默认的窗口是一个固定的窗口,仅仅在一组的第一行开始,一直继续到当前行,要使用窗口,必须使用ORDER BY子句根据2个标准可以建立窗口:数据值的范围(RANGES)或与当前行的行偏移量,PL/SQL 语言,分析函数,5)Rang窗口Range 5 preceding:将产生一个滑动窗口,他在组中拥有当前行以前5行的集合ANGE窗口仅对NUMBERS和DATES起作用,因为不可能从VARCHAR2中增加或减去N个单元另外的限制是ORDER BY中只能有一列,因而范围实际上是一维的,不能在N维空间中例:avg(t.sal)over(order by t.hiredate asc range 100 preceding)统计前100天平均工资6)Row窗口利用ROW分区,就没有RANGE分区那样的限制了,数据可以是任何类型,且ORDER BY 可以包括很多列7)Specifying窗口UNBOUNDED PRECEDING:这个窗口从当前分区的每一行开始,并结束于正在处理的当前行CURRENT ROW:该窗口从当前行开始(并结束)Numeric Expression PRECEDING:对该窗口从当前行之前的数字表达式(Numeric Expression)的行开始,对RANGE来说,从从行序值小于数字表达式的当前行的值开始.Numeric Expression FOLLOWING:该窗口在当前行Numeric Expression行之后的行终止(或开始),且从行序值大于当前行Numeric Expression行的范围开始(或终止)range between 100 preceding and 100 following:当前行100前,当前后100后,PL/SQL 语言,正则表达式,方括号表达式 描述:alnum:字母和数字混合的字符:alpha:字母字符:cntrl:控制字符:digit:数字字符:graph:图像字符:lower:小写字母字符:print:打印字符:punct:标点符号字符:space:空格字符:upper:大写字母字符:xdigit:十六进制数字字符相当于0-9a-fA-F,PL/SQL 语言,正则表达式,元字符 字符含义 匹配字符串的开始位置(在中使用,此时它表示不接受该字符集合。a:匹配以a开始的字符串 a:匹配不含a的字符串-当使用在a-m表示范围;当使用在第一个字符时表示连字符串,如-abc$匹配字符结束位置a$:匹配以a结束的字符串.匹配除换行符 n之外的任何单字符。?匹配前面的子表达式零次或一次tr(y(ing)?):可以表示try或者trying*匹配前面的子表达式零次或多次+匹配前面的子表达式一次或多次()标记一个子表达式的开始和结束位置a(b)*可以匹配ab,abb,abbb,youabb(c|d)匹配c或d标记一个中括号表达式cd匹配选择c或d等同于(c|d)。匹配的是单字符,cd是匹配c,d之外的单字符。a-z表示所有小写字母m,nm=出现次数=n,m表示出现m次,m,表示至少出现m次。|表示或者的关系。指明两项之间的一个选择,PL/SQL 语言,正则表达式,REGEXP_LIKE(source_string,pattern,match_parameter)source_string:源字符串pattern:正则表达式match_parameter:匹配模式(i:不区分大小写;c:区分大小写;n:允许使用可以匹配任意字符串的操作符;m:将x作为一个包含多行的字符串REGEXP_REPLACE(source_string,pattern,replace_string,position,occurtence,match_parameter)replace_string:用于替换的字符串position:开始搜索的起始位置occurtence:指定替换第n次出现字符串REGEXP_SUBSTR(source_string,pattern,position,occurrence,match_parameter)REGEXP_INSTR(source_string,pattern,start_position,occurrence,return_option,match_parameter)start_position:开始搜索位置Occurrence:第n次出现pattern,默认为1return_option:0:pattern的起始位置,1:pattern下一个字符起始位置,默认为0REGEXP_COUNT(source_string,pattern,start_position,match_parameter)11g新增的函数,表示pattern在原字符串中出现的次数start_position:开始搜索的位置,PL/SQL 语言,MERGE INTO 的用途,MERGE INTO 是Oracle 9i以后才出现的新的功能。那这个功能 是什么呢?简单来说,就是:“有则更新,无则插入”从这句话里,应该可以理解到,merge into 操作一个对象A的时候,要有另外一个结果集做为源数据 B.merge into 将B中的数据与A中的数据按照一定条件C进行对比,如果 A中数据满足C条件,则进行update操作,如果不满足条件 C,则进行insert操作。(请注意这种对应关系)2、语法结构 MERGE INTO schema.tablealias USING schema.table|views|query alias ON condition WHEN MATCHED THEN UPDATE SET clause WHEN NOT MATCHED THEN INSERT VALUES clause,PL/SQL 语言,Oracle SQL的四种用法,SQLNOTFOUND-更新,删除操作时没找到符合条件的记录,SQLFOUND-SELECT COLUMNNAME INTO,更新,删除找到符合条件的记录顶部的SQLROWCOUNT-判定当前更新记录数 SQLISOPEN的-如果游标打开,则为TRUE,如果游标关闭,则为FALSE.对于隐式游标而言SQL%ISOPEN总是FALSE,这是因为隐式游标在DML语句执行时打开,结束时就立即关闭TRUE如果此属性的产量,影响一个或多个行INSERT,UPDATE或DELETE语句或SELECT INTO语句返回一个或多个行。否则,它会产生FALSE。ISOPEN 属性,通常会产生假的,因为Oracle会自动关闭SQL游标后执行相关的SQL语句。NOTFOUND 属性是相反的逻辑。它会产生TRUE如果一个INSERT,UPDATE或DELETE语句影响的任何

    注意事项

    本文(PLSQL基础培训.ppt)为本站会员(小飞机)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开