300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > Oracle PL/SQL 存储过程

Oracle PL/SQL 存储过程

时间:2023-07-22 08:45:13

相关推荐

Oracle  PL/SQL 存储过程

Oracle PL/SQL 存储过程

Oracle

简介:

是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小微机环境。它是一种高效率的、可靠性好的、适应高吞吐量的数据库方案。

oracle安装

Oracle一般安装于公司服务器中,更多应该关注于客户端连接数据方法。

oracle连接

下载oracle客户端连接程序

/database/technologies/instant-client/winx64-64-downloads.html

以下午的经验看,12.1的版本最常见。至于是64bit还是32bit要看服务器还有你自己的PL/SQL Developer程序的位数,如果按照方式流程全走完还是连接不成功则考虑更换位数版本。

安装并配置instant-client

解压至你自己想解压的目录则完成安装

根据官网要求,在“环境变量”→“系统变量”→“path”中添加配置instant-client的路径(就是你刚刚解压的路径)

配置tnsname.ora

在instant-client根目录创建用于存放tnsname.ora的目录,官方推荐为~\network\admin目录下,我个人配置为~config

在以上路径创建tnsname.ora文件,并填入以下信息,第一行为tnsname.ora全路径信息,第二段开始为自定义连接信息

# tnsnames.ora Network Configuration File: D:\Oracle\instantclient_12_1\config\tnsnames.ora# Generated by Oracle configuration tools.orcl =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1 )(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = orcl )))test-oracle =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = XXX.XXX.XXX.XXX )(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = XXXX)))

其中,第一段内容解释如下 ORCL这个名字是由你自己取的,客户端是通过这个名字来获得服务器的登录信息的。PROTOCOL是指定的通信协议,oracle是通过TCP/IP通信的。所以这里写TCP就好。HOST的话如果客户端和数据库在同一台电脑可以用localhost也可以用IP。如果不同电脑就必须用IP了,是oracle所在电脑的IP。PORT一般都是1521SERVER是dedicated检测模式的监听。(这个我也不是很清楚,还有一中是请求还是怎么样)service_name是oracle的SID

配置环境变量使之生效

在“环境变量”→“系统变量”中新建一个变量,name为TNS_ADMIN,路径为存放tnsname.ora的目录,如本例中为config

客户端软件连接

推荐使用PL/SQL Developer连接使用。如何使用及配置见下文

PL/SQL Developer连接和使用

连接配置

参考此博客:/master_yao/article/details/51055850,instant-client配置请忽略上文已讲

简单使用

打开软件连接成功后,首先查看左侧栏,选中Objects栏,最大化,只看它即可该窗口中,要显示全部可查看内容,则下拉选项中,选择所有用户和All Objects;选择My Objects则显示自己定义的库内容;该窗口中,主要要查看的信息有 Functions:存储函数Procedures:存储过程Tables:表Indexs:索引Sequences:序列(类似于MySQL的主键自增功能)Users:用户Tablespaces:表空间 还有两个不知道有没有用的信息:Packages和Types 对具体存储函数和存储过程,右键可执行,编辑等,如有权限还可以测试对表、索引等操作比较常规就不过多说右侧大片空白区域,右键可新建SQL窗口用于书写SQL语句,选中要执行的语句点击绿色三角符号即可执行

Oracle操作:

包括表的CRUD,属性的CRUD、单\多行函数(count之类的)、条件表达式、分组查询、多表查询、连接、分页查询、视图、索引等,与常规SQl相似,就不过多学习,遇到问题现学。

学习链接:/video/BV1WZ4y1H7du?p=543

触发器:略。学习链接:/video/BV1WZ4y1H7du?p=566

java使用存储过程和存储函数

常规的java配置数据库环境的配置在调用方法时,替换为存储过程/函数即可

PL/SQL

/video/BV14W411u7wT?t=18&p=34

简介:

PL/SQL也是一种程序语言,叫做过程化SQL语言(Procedural Language/SQL)。PL/SQL是Oracle数据库对SQL语句的扩展。

官方文档:

/en/database/oracle/oracle-database/19/lnpls/overview.html#GUID-2FBCFBBE-6B42-4DB8-83F3-55B63B75B1EB

PL/SQL 块的基本结构

<< label >> (optional)--<<标签>>(可选)DECLARE -- Declarative part (optional)声明部分(可选)-- Declarations of local types, variables, & subprograms局部类型,变量和子程序的声明BEGIN-- Executable part (required)可执行部分(必填)-- Statements (which can use items declared in declarative part)语句(可以使用声明部分中声明的项目)[EXCEPTION -- Exception-handling part (optional)处理部分(可选)-- Exception handlers for exceptions (errors) raised in executable part在可执行文件中提出的例外(错误)的异常处理程序]END;

三类控制语句

条件选择:/en/database/oracle/oracle-database/19/lnpls/plsql-control-statements.html#GUID-B7DD4E62-3ED2-41E9-AAE5-90A78788BB31循环语句:/en/database/oracle/oracle-database/19/lnpls/plsql-control-statements.html#GUID-4CD12F11-2DB8-4B0D-9E04-DF983DCF9358Sequential control statements顺序控制语句:/en/database/oracle/oracle-database/19/lnpls/plsql-control-statements.html#GUID-7CA9E984-CCB3-4DB8-8D0C-30BF0C74BA83

游标

游标是指向私有 SQL 区域的指针,该区域存储有关处理特定 SQL 语句或 PL/SQL SELECT INTO 语句的信息。

/en/database/oracle/oracle-database/19/lnpls/static-sql.html#GUID-F1FE15F9-5C96-4C4E-B240-B7363D25A8F1

异常和触发器

异常

异常类型

Internally Defined Exceptions

内部定义的异常

Predefined Exceptions

预定义的异常

User-Defined Exceptions

用户定义异常

异常区分

异常处理部分结构

EXCEPTIONWHEN ex_name_1 THEN statements_1 -- Exception handlerWHEN ex_name_2 OR ex_name_3 THEN statements_2 -- Exception handlerWHEN OTHERS THEN statements_3 -- Exception handlerEND;--WHEN OTHERS THEN一定在最后

内部定异常语句

DECLAREdeadlock_detected EXCEPTION;PRAGMA EXCEPTION_INIT(deadlock_detected, -60);-- -60为内部异常,可在文档找到内部异常含义BEGIN...EXCEPTIONWHEN deadlock_detected THEN...END;

用户自定义异常语句

CREATE PROCEDURE account_status (due_date DATE,today DATE) AUTHID DEFINERISpast_due EXCEPTION; -- declare exceptionBEGINIF due_date < today THENRAISE past_due; -- explicitly raise exceptionEND IF;EXCEPTIONWHEN past_due THEN -- handle exceptionDBMS_OUTPUT.PUT_LINE ('Account past due.');END;

关键:RAISE关键字抛出异常

触发器:略,需要再学

存储过程

见下方存储过程

简单实例:/video/BV14W411u7wT?p=41

存储过程

简介:存储过程 (Stored Procedure) 是在大型数据库系统中 , 一组为了完成特定功能的 SQL 语句集 , 存储在数据库中 , 经过第一次编译后再次调用不需要再次编译 , 用户通过指定存储过程的名字并给出参数 (如果该存储过程带有参数) 来执行它 , 存储过程是数据库中的一个重要对象 ; 存储过程中可以包含 逻辑控制语句 和 数据操纵语句 , 它可以接受参数 , 输出参数 , 返回单个或多个结果集以及返回值 ;

优缺点:/tojohnonly/article/details/70738629

Oracle存储过程

/video/BV1WZ4y1H7du?p=562,简单演示视频

比较全面的博客总结:/weixin_41968788/article/details/83659164/

Open for语句与游标的使用:/keven2840/article/details/77870465/

异常:/qq_34745941/article/details/82846820

抛出异常后,PL/SQL 块或子程序的正常执行将停止,并将控制转移到其异常处理部分(即捕获异常代码块):

EXCEPTIONWHEN exception_name1 THEN -- handlersequence_of_statements1WHEN exception_name2 THEN -- another handlersequence_of_statements2...WHEN OTHERS THEN -- optional handlersequence_of_statements3END;

原文:/cd/B10501_01/appdev.920/a96624/07_errs.htm

When an exception is raised, normal execution of your PL/SQL block or subprogram stops and control transfers to its exception-handling part, which is formatted as follows:

MySQL存储过程

官方文档:/doc/refman/5.7/en/stored-objects.html

非常全面的总结:/w3cnote/mysql-stored-procedure.html

游标:

/liguo9860/article/details/50848216

/weixin_42981419/article/details/86162179

Oracle存储过程向MySQL转换
全面的博客总结: /shy_snow/article/details/78262644/HondaHsu/p/3641258.html/loveismile/p/5030911.html oracle的SYS_REFCURSOR游标,在MySQL的转换方案 /read.php?10,434966,434966#msg-434966/weixin_35755188/article/details/114341979

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。