当前位置:网站首页> 科技>正文

oracle存储过程学习经典

发布于:2020-05-17 15:01:18发布者:天晴网友

存储过程创建语法:

create or replace procedure 存储过程名(param1 in type,param2 out type)

as

变量1 类型(值范围);

变量2 类型(值范围);

Begin

Select count(*) into 变量1 from 表A where列名=param1;

If (判断条件) then

Select 列名 into 变量2 from 表A where列名=param1;

Dbms_output。Put_line(‘打印信息’);

Elsif (判断条件) then

Dbms_output。Put_line(‘打印信息’);

Else

Raise 异常名(NO_DATA_FOUND);

End if;

Exception

When others then

Rollback;

End;

注意事项:

1, 存储过程参数不带取值范围,in表示传入,out表示输出

2, 变量带取值范围,后面接分号

3, 在判断语句前最好先用count(*)函数判断是否存在该条操作记录

4, 用select 。。。into。。。给变量赋值

5, 在代码中抛异常用 raise+异常名

以命名的异常

命名的系统异常 产生原因

ACCESS_INTO_NULL 未定义对象

CASE_NOT_FOUND CASE 中若未包含相应的 WHEN ,并且没有设置

ELSE 时

COLLECTION_IS_NULL 集合元素未初始化

CURSER_ALREADY_OPEN 游标已经打开

DUP_VAL_ON_INDEX 唯一索引对应的列上有重复的值

INVALID_CURSOR 在不合法的游标上进行操作

INVALID_NUMBER 内嵌的 SQL 语句不能将字符转换为数字

NO_DATA_FOUND 使用 select into 未返回行,或应用索引表未初始化的

TOO_MANY_ROWS 执行 select into 时,结果集超过一行

ZERO_DIVIDE 除数为 0

SUBSCRIPT_BEYOND_COUNT 元素下标超过嵌套表或 VARRAY 的最大值

SUBSCRIPT_OUTSIDE_LIMIT 使用嵌套表或 VARRAY 时,将下标指定为负数

VALUE_ERROR 赋值时,变量长度不足以容纳实际数据

LOGIN_DENIED PL/SQL 应用程序连接到 oracle 数据库时,提供了不

正确的用户名或密码

NOT_LOGGED_ON PL/SQL 应用程序在没有连接 oralce 数据库的情况下

访问数据

PROGRAM_ERROR PL/SQL 内部问题,可能需要重装数据字典& pl./SQL

系统包

ROWTYPE_MISMATCH 宿主游标变量与 PL/SQL 游标变量的返回类型不兼容

SELF_IS_NULL 使用对象类型时,在 null 对象上调用对象方法

STORAGE_ERROR 运行 PL/SQL 时,超出内存空间

SYS_INVALID_ID 无效的 ROWID 字符串

TIMEOUT_ON_RESOURCE Oracle 在等待资源时超时

---------------------------------------------------------------------------------------------------------------------

oracle 存储过程的基本语法 及注意事项

oracle 存储过程的基本语法

1.基本结构

CREATE OR REPLACE PROCEDURE 存储过程名字

(

参数1 IN NUMBER,

参数2 IN NUMBER

) IS

变量1 INTEGER :=0;

变量2 DATE;

BEGIN

END 存储过程名字

2.SELECT INTO STATEMENT

将select查询的结果存入到变量中,可以同时将多个列存储多个变量中,必须有一条

记录,否则抛出异常(如果没有记录抛出NO_DATA_FOUND)

例子:

BEGIN

SELECT col1,col2 into 变量1,变量2 FROM typestruct where xxx;

EXCEPTION

WHEN NO_DATA_FOUND THEN

xxxx;

END;

...

3.IF 判断

IF V_TEST=1 THEN

BEGIN

do something

END;

END IF;

4.while 循环

WHILE V_TEST=1 LOOP

BEGIN

XXXX

END;

END LOOP;

5.变量赋值

V_TEST := 123;

6.用for in 使用cursor

...

IS

CURSOR cur IS SELECT * FROM xxx;

BEGIN

FOR cur_result in cur LOOP

BEGIN

V_SUM :=cur_result.列名1+cur_result.列名2

END;

END LOOP;

END;

7.带参数的cursor

CURSOR C_USER(C_ID NUMBER) IS SELECT NAME FROM USER WHERE TYPEID=C_ID;

OPEN C_USER(变量值);

LOOP

FETCH C_USER INTO V_NAME;

EXIT FETCH C_USER%NOTFOUND;

do something

END LOOP;

CLOSE C_USER;

8.用pl/sql developer debug

连接数据库后建立一个Test WINDOW

在窗口输入调用SP的代码,F9开始debug,CTRL+N单步调试

点击展开全文
上一篇:网卡设置
相关数码科技+更多
  • iscsi存储和nas的区别

    NAS所支持的网络协议有NFS和CIFS。注意这里是网络协议。 ISCSI属于SAN的一种,它走的协议是通过IP网络,将SCSI块数据转换成网络封包。 虽然ISCSI与NAS一样,都是通过IP网络来传输数据,但

  • 微信存储空间加载不出来怎么办

    微信 存储空间加载不出来怎么办 ?下面教教大家具体的操作方法。 微信存储空间加载不出来是因为微信缓存的数据过多,加载速度就会变慢,可以稍微等待一会 01 也可打开手机设置,

  • 取消苹果手机qq密码存储

    本题目由天晴滚动网为您解答: 01 点击左上角的头像,再点击设置 02 再选择账号管理 03 点击右上角的编辑 04 在账号前面会出现红色的图标,点击这个图标 05 账号后面就会出现删除,

  • 该怎么制作u盘启动

    电脑在使用过程中会越来越卡,那么我们会选择重装回原来的系统,但是重装系统势必要制作 u盘启动盘 ,但是有很多人都还不知道如何制作u盘启动盘。那接下来以win7系统为例示范一

  • Win10安装过程出现了问题OOBEIDPS怎么解决

    最近有用户反馈在Win10系统安装过程中出现了问题,你可以重试或者可以立即跳过OOBEIDPS很多用户可能不知道这是怎么回事,影响大不大,别担心,下面说明一下win10安装出错oobeidps的原因

  • swagger是什么

    就是把相关的信息存储在它定义的描述文件里面(yml或json格式),再通过维护这个描述文件可以去更新接口文档,以及生成各端代码。而Springfox-swagger,则可以通过扫描代码去生成这个描述

文章评论