Oracle数据库迁移培训FINAL.ppt
《Oracle数据库迁移培训FINAL.ppt》由会员分享,可在线阅读,更多相关《Oracle数据库迁移培训FINAL.ppt(61页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Oracle数据迁移Oracle存储过程简介Informix转Oracle修改要点前台修改前台修改后台修改后台修改研发中心测试环境存储过程测试方法存储过程的建立存储过程的建立存储过程的语法结构存储过程的语法结构存储过程的控制语句存储过程的控制语句存储过程的开发存储过程的开发存储过程的运行存储过程的运行存储过程的调试存储过程的调试InformixInformix与与oracleoracle存储过程的差异存储过程的差异函数函数包包Oracle存储过程简介存储过程的建立编写后缀名为编写后缀名为sqlsql的文件,一个存储过程一个文件。的文件,一个存储过程一个文件。过程格式过程格式:CREATEORR
2、EPLACEPROCEDURECREATEORREPLACEPROCEDURE存储过程名字存储过程名字(参数参数1INNUMBER,1INNUMBER,参数参数2INNUMBER2INNUMBER)IS)IS变量变量1INTEGER:=0;1INTEGER:=0;变量变量2DATE;2DATE;BEGINBEGINENDEND存储过程名字存储过程名字;Oracle存储过程简介创建一个简单存储过程的方式 1.1.SQL*PlusSQL*Plus并且从并且从SQL*PlusSQL*Plus登录到你的数据库登录到你的数据库;打开打开test.sqltest.sql文件文件.2.2.在在SQLSQL命
3、令提示符下输入以下命令:命令提示符下输入以下命令:SQLskeletonSQLskeleton注释注释:(SQL*Plus:(SQL*Plus装载装载stest.sqlstest.sql文件的内容到文件的内容到SQL*PlusSQL*Plus缓冲区缓冲区,并且执行并且执行SQL*PlusSQL*Plus语句语句;SQL*Plus;SQL*Plus会通知你存储过程已经被成功地创建会通知你存储过程已经被成功地创建)3.3.写一个存储过程写一个存储过程,实例实例:CREATEORREPLACEPROCEDUREtestCREATEORREPLACEPROCEDUREtestISISBEGINBEGI
4、NDBMS_OUTPUT.PUT_LINE(HelloWorldDBMS_OUTPUT.PUT_LINE(HelloWorld!);!);END;END;Oracle存储过程简介运行查看信息 1.SQLEXECUTEskeleton;1.SQLEXECUTEskeleton;注释注释(SQL*Plus(SQL*Plus输出一下信息确信存储过程成功执输出一下信息确信存储过程成功执即即PL/PL/SQLproceduresuccessfullycompletedSQLproceduresuccessfullycompleted).).2.2.在在SQL*PlusSQL*Plus命令行提示符命令行提
5、示符,键入键入:SQLSETSERVEROUTPUTONSQLSETSERVEROUTPUTON再次敲入再次敲入SQLEXECUTEskeletonSQLEXECUTEskeleton即可即可.注释注释:查看存储过程中的打印语句信息查看存储过程中的打印语句信息,实行以上命令实行以上命令.Oracle存储过程简介删除一个存储过程 1.1.在在SQLSQL命令提示符下输入以下命令:命令提示符下输入以下命令:命令命令:SQLDROPPROCEDURE:SQLDROPPROCEDURE存储过程名存储过程名;存储过程的注释-注释一行注释一行Oracle存储过程简介存储过程入参与返回值createorre
6、placeprocedurecreateorreplaceprocedurerunbyparmetersrunbyparmeters(isalisal inin emp.sal%typeemp.sal%type,snamesname outout varcharvarchar,sjobsjob inoutinout varcharvarchar)asasicounticountnumber;number;beginbeginifificounticount=1then=1then.elseelse.endif;endif;end;end;Oracle存储过程简介存储过程变量定义、常用变量类型存
7、储过程变量定义、常用变量类型 realsalrealsalemp.sal%typeemp.sal%type;-;-与与empemp表中的表中的salsal字段类型相同字段类型相同 realnamerealnamevarchar2(40);varchar2(40);realjobrealjobvarchar2(40);varchar2(40);Pricenumber(5,2);-543.21Pricenumber(5,2);-543.21 Product_idProduct_idintergerinterger;注释注释:同一存储过程中,变量名最好不要重复。同一存储过程中,变量名最好不要重复。O
8、racle存储过程简介存储过程赋值语句:=:=realjobrealjob:=work;:=work;Product_idProduct_id:=100001;:=100001;realnamerealname:=:=张三张三;PricePrice:=3.1415;:=3.1415;this_daythis_day:=TODAY;:=TODAY;Oracle存储过程简介存储过程变量先声明且必须声明才能使用。先声明且必须声明才能使用。BeginendBeginend块外声明的变量影响全局。块外声明的变量影响全局。BeginendBeginend块内声明的变量影响本块内声明的变量影响本Begine
9、ndBeginend。变量声明必须在存储过程开头或者变量声明必须在存储过程开头或者BeginendBeginend块的开块的开头部分头部分Oracle存储过程简介存储过程操作符+-*/|合并合并如:如:sp_str1=“ABC”|”DEF”,sp_str1=“ABC”|”DEF”,则:则:sp_str1=“ABCDEF”sp_str1=“ABCDEF”Oracle存储过程简介存储过程异常控制ExceptionExceptionwhenwhentoo_many_rowstoo_many_rowsthenthenDBMS_OUTPUT.PUT_LINE(DBMS_OUTPUT.PUT_LINE(返
10、回值多于返回值多于1 1行行););whenothersthenwhenothersthenDBMS_OUTPUT.PUT_LINE(DBMS_OUTPUT.PUT_LINE(在在RUNBYPARMETERSRUNBYPARMETERS过程中出错!过程中出错!););Oracle存储过程简介存储过程结构块BEGINBEGINBEGINBEGIN第一步处理;第一步处理;END;END;BEGINBEGIN第二步处理;第二步处理;END;END;BEGINBEGIN第三步处理;第三步处理;END;END;END;END;Oracle存储过程简介存储过程游标带参数的游标CURSORC_USERCUR
11、SORC_USER(C_IDNUMBER)(C_IDNUMBER)ISISSELECTNAMEFROMUSERWHERETYPEID=C_IDNUMBER;SELECTNAMEFROMUSERWHERETYPEID=C_IDNUMBER;OPENC_USEROPENC_USER(变量值变量值);LOOPLOOPFETCHC_USERINTOV_NAME;FETCHC_USERINTOV_NAME;EXITWHENC_USER%NOTFOUND;EXITWHENC_USER%NOTFOUND;ENDLOOP;ENDLOOP;CLOSEC_USER;CLOSEC_USER;Oracle存储过程简介
12、存储过程游标不带参数的游标CURSORC_USERISCURSORC_USERISSELECTNAMEFROMUSERWHERETYPEID=C_IDNUMBER;SELECTNAMEFROMUSERWHERETYPEID=C_IDNUMBER;OPENC_USER;OPENC_USER;LOOPLOOPFETCHC_USERINTOV_NAME;FETCHC_USERINTOV_NAME;EXITWHENC_USER%NOTFOUND;EXITWHENC_USER%NOTFOUND;ENDLOOP;ENDLOOP;CLOSEC_USER;CLOSEC_USER;Oracle存储过程简介存储过
13、程LOOP循环 Counter:=0;Counter:=0;LOOPLOOPcounter:=counter+1;counter:=counter+1;EXITWHENcounter=5;EXITWHENcounter=5;ENDLOOP;ENDLOOP;Oracle存储过程简介存储过程for循环方式一:BEGINBEGINFORFORcur_resultcur_resultincur(incur(结果集结果集)LOOP)LOOPBEGINBEGINV_SUM:=V_SUM:=cur_resultcur_result.列名列名1+cur_result.1+cur_result.列名列名2;2;
14、END;END;ENDLOOP;ENDLOOP;END;END;Oracle存储过程简介存储过程for循环方式二:BEGINBEGINFORFORcur_resultcur_resultREVERSE1.5LOOPREVERSE1.5LOOPBEGINBEGINDBMS_OUTPUT.PUT_LINE(cur_resultDBMS_OUTPUT.PUT_LINE(cur_result););END;END;ENDLOOP;ENDLOOP;END;END;Oracle存储过程简介存储过程while循环Counter:=0;Counter:=0;WHILEcounter6LOOPWHILEcoun
15、terstr2thenIFstr1str2thenresult:=1;result:=1;ELSIFELSIFstr2str1THENstr2str1THENresult:=-1;result:=-1;ELSEELSEresult:=0;result:=0;ENDIF;ENDIF;Oracle存储过程简介存储过程if条件表达式 比较符比较符 ,=,=,!=!=ANDAND,OROR,NOTNOT(NOT)BETWEENAND(NOT)BETWEENAND(NOT)IN(,)(NOT)IN(,)IS(NOT)NULLIS(NOT)NULL(NOT)LIKE(NOT)LIKEOracle存储过程简
16、介%type定义方法在在pl/pl/sqlsql中可以将变量和常量声明为内建或用户定义中可以将变量和常量声明为内建或用户定义的数据类型的数据类型,以引用一个列名以引用一个列名,同时继承他的数据类同时继承他的数据类型和大小型和大小.注注:v_av_anumber(5):=10;number(5):=10;v_bv_b v_a%typev_a%type:=15;:=15;v_cv_c v_a%typev_a%type;Oracle存储过程简介存储过程调用方式(种方式)DeclareDeclarerealsalrealsalemp.sal%typeemp.sal%type;realnamerealn
17、amevarchar(40);varchar(40);realjobrealjobvarchar(40);varchar(40);BEGINBEGINrealsalrealsal:=1100;:=1100;realnamerealname:=;:=;realjobrealjob:=CLERK;:=CLERK;(1 1)runbyparmeters(realsal,realname,realjobrunbyparmeters(realsal,realname,realjob););必须按顺序必须按顺序(2 2)runbyparmeters(snamerunbyparmeters(sname=re
18、alname,isalrealname,isal=realsal,sjobrealsal,sjob=realjobrealjob);-);-不按顺序不按顺序DBMS_OUTPUT.PUT_LINE(REALNAME|REALJOB);(DBMS_OUTPUT.PUT_LINE(REALNAME|REALJOB);(输出模式输出模式)END;END;Oracle存储过程简介函数结构CREATEORREPLACEFUNCTIONCREATEORREPLACEFUNCTION函数名函数名(参数参数1INNUMBER,1INNUMBER,参数参数2INNUMBER2INNUMBER)RETURNRET
19、URN类型类型 IS|ASIS|ASBEGINBEGINFUNCTION_BODYFUNCTION_BODYEND;END;注注:函数与存储过程相似函数与存储过程相似,唯一区别函数必须向调用他的语句返回一个值唯一区别函数必须向调用他的语句返回一个值,它与存它与存储过合起来被称为存储子程序储过合起来被称为存储子程序,从某种意义讲为小程序从某种意义讲为小程序.Oracle存储过程简介包头和包体结构 CREATEORREPLACEPACKAGECREATEORREPLACEPACKAGE包名包名 IS|ASIS|AS PACKAGE_SPECIFICATIONPACKAGE_SPECIFICATIO
20、NENDEND包名包名;CREATEORREPLACEPACKAGEBODYCREATEORREPLACEPACKAGEBODY包名包名IS|ASIS|AS PACKAGEPACKAGE过程过程 ENDEND包名包名;注注:PACKAGE_SPECIFICATIONPACKAGE_SPECIFICATION是指包的用户使用的过程和函数的列表是指包的用户使用的过程和函数的列表.PACKAGEPACKAGE过程过程 是指包的用户可以使用的存储过程和函数的列表是指包的用户可以使用的存储过程和函数的列表(包含变量包含变量,类类型型,定义和游标定义和游标)包主要分为包主要分为:规范和包体规范和包体.它的
21、用途主要是把存储过程和函数组织到包中它的用途主要是把存储过程和函数组织到包中.通过通过PL/SQLPL/SQL代码模块化代码模块化,构构建其他编程人员重用的代码库建其他编程人员重用的代码库.Oracle存储过程简介Oracle数据迁移修改要点前台SQL的修改Oracle数据迁移修改要点(前台SQL的修改)关键字:first(存储过程适用)对于对于firstfirst语句,如果不包含排序,例如语句,如果不包含排序,例如selectselectfristfrist1*from1*fromtabxtabx,可以修改为,可以修改为select*fromselect*fromtabxtabxwherew
22、hererownumrownum=1=1;如果包含排序,如果包含排序,selectselectfristfrist1*from1*fromtabxtabxorderorderbybypidpid,则只能修改为子查询的形式,在子查询,则只能修改为子查询的形式,在子查询内部排序,然后在外部增加内部排序,然后在外部增加rownumrownum条件,例如条件,例如select*from(select*fromselect*from(select*fromtabxtabxorderbyorderbypidpid)wherewhererownumrownum=1=1关键字:outer(存储过程适用)(存储
23、过程适用)当只有当只有1 1个个outerouter时时,需要在,需要在WHEREWHERE子句中这个表所有字段的后面加上子句中这个表所有字段的后面加上(+)(+)标识。标识。例如:查询所有团队,及其所辖例如:查询所有团队,及其所辖2626职级的人:职级的人:InformixInformix:select*fromt50_tdeptb,outer(t01_psna)where:select*fromt50_tdeptb,outer(t01_psna)wherea.tida.tid=b.tidb.tid anda.t01actrank=26anda.t01actrank=26OracleOrac
24、le:select*fromt01_psna,t50_tdeptbwhere:select*fromt01_psna,t50_tdeptbwherea.tida.tid(+)=(+)=b.tidb.tidandanda.t01actrank(+)=26a.t01actrank(+)=26 当有当有2 2个或多个个或多个outerouter时时,需要写成标准的,需要写成标准的outerjoinouterjoin的形式,例如的形式,例如informixinformix:select*fromselect*fromfilelinesfilelinest1,outer(filelinest2),t1,
25、outer(filelinest2),outer(pathlinesouter(pathlinest3t3)wheret1.lines=t2.linesandt1.path=t3.pathwheret1.lines=t2.linesandt1.path=t3.pathOracleOracle:select:select*from*fromfilelinesfilelinest1leftouterjoint1leftouterjoinfilelinesfilelinest2ont2ont1.lines=t2.linesleftouterjoint1.lines=t2.linesleftouter
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Oracle 数据库 迁移 培训 FINAL
限制150内