专业汉语词典知识平台,分享汉字词语知识、历史文学知识解答!

励北网
励北网

oracle存储过程是什么,oracle存储过程详解

来源:小易整编  作者:小易  发布时间:2023-03-17 04:33
摘要:oracle存储过程是什么,oracle存储过程详解1、定义所谓存储过程(StoredProcedure),就是一组用于完成特定数据库功能的SQL语句集,该SQL语句集经过编译后存储在数据库系统中。在使用时候,用户通过指定已经定义的存储过程...

1

2

3

4

5

6

7

8

9

IS

CURSORcur ISSELECT* FROMxxx;

BEGIN

FORcur_result incur LOOP

BEGIN

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

END;

ENDLOOP;

END;

7. 带参数的cursor

1

2

3

4

5

CURSORC_USER(C_ID NUMBER) ISSELECTNAMEFROMUSERWHERETYPEID=C_ID;

OPENC_USER(变量值);

FETCHC_USER INTOV_NAME;

EXIT WHENFETCHC_USER%NOTFOUND;

CLOSEC_USER;

8. 用pl/sql developer debug

连接数据库后建立一个Test WINDOW,在窗口输入调用SP的代码,F9开始debug,CTRL+N单步调试

关于oracle存储过程的若干问题备忘

1.在oracle中,数据表别名不能加as,如:

1

2

selecta.appname fromappinfo a;-- 正确

selecta.appname fromappinfo asa;-- 错误

也许,是怕和oracle中的存储过程中的关键字as冲突的问题吧

2.在存储过程中,select某一字段时,后面必须紧跟into,如果select整个记录,利用游标的话就另当别论了。

1

2

3

4

selectaf.keynode intokn fromAPPFOUNDATION af

whereaf.appid=aid andaf.foundationid=fid;-- 有into,正确编译

selectaf.keynode fromAPPFOUNDATION af

whereaf.appid=aid andaf.foundationid=fid;-- 没有into,编译报错,提示:Compilation Error: PLS-00428: an INTO clause is expected in this SELECT statement

3.在利用select…into…语法时,必须先确保数据库中有该条记录,否则会报出”no data found”异常。

可以在该语法之前,先利用select count(*) from 查看数据库中是否存在该记录,如果存在,再利用select…into…

4.在存储过程中,别名不能和字段名称相同,否则虽然编译可以通过,但在运行阶段会报错

1

2

3

4

5

6

--正确

selectkeynode intokn fromAPPFOUNDATION whereappid=aid andfoundationid=fid;

--错误

selectaf.keynode intokn fromAPPFOUNDATION af

whereaf.appid=appid andaf.foundationid=foundationid;

-- 运行阶段报错,提示ORA-01422:exact fetch returns more than requested number of rows

5.在存储过程中,关于出现null的问题

假设有一个表A,定义如下:

1

2

3

4

5

createtableA(

id varchar2(50) primarykeynotnull,

<a class="keylink"href="https://www.2cto/kf/ware/vc/"target="_blank">

vcount number(8) notnull,

bid varchar2(50) notnull-- 外键

);

如果在存储过程中,使用如下语句:

1

selectsum(vcount) intofcount fromA wherebid='xxxxxx';

如果A表中不存在bid=”xxxxxx”的记录,则fcount=null(即使fcount定义时设置了默认值,如:fcount number(8):=0依然无效,fcount还是会变成null),这样以后使用fcount时就可能有问题,所以在这里最好先判断一下:

1

2

3

if fcount isnullthen

fcount:=0;

endif;

这样就一切ok了。

6.Hibernate调用oracle存储过程

1

2

3

4

5

6

7

8

9

10

11

12

this.pnumberManager.getHibernateTemplate().execute(

new HibernateCallback() {

publicObject doInHibernate(Session session)

throws HibernateException, SQLException {

CallableStatement cs = session

.connection()

.prepareCall("{call modifyapppnumber_remain(?)}");

cs.setString(1, foundationid);

cs.execute();

returnnull;

}

});


本文地址:百科问答频道 https://www.neebe.cn/wenda/930785_3.html,易企推百科一个免费的知识分享平台,本站部分文章来网络分享,本着互联网分享的精神,如有涉及到您的权益,请联系我们删除,谢谢!

共3页 1 2 3 当前是最后一页

百科问答
小编:小易整编
相关文章相关阅读
  • 文件存储是什么意思?

    文件存储是什么意思?

    文件存储,也叫文件存储系统,是数据存储的一种方式,是一种存储一组文件的系统,它可以存储文件拷贝、文件夹和其他数据。文件存储系统有不同类型,具体取决于它支持的文件类型。一些文件存储系统只支持一种文件类型,如电子文件系统,只支持电子文件类型。...

  • 存储协议是什么意思?

    存储协议是什么意思?

    存储协议是指计算机系统中不同设备之间进行数据交换和共享时所采用的规范化通信协议。它主要规定了数据存储和访问的格式,以及设备之间的通信方式等方面的规则。存储协议的实现可以使不同厂商和不同平台的存储设备进行数据交换与共享,从而提高了数据的可靠...

  • 虚拟存储是什么意思?

    虚拟存储是什么意思?

    虚拟存储是指在物理存储上实现虚拟磁盘的一种存储技术。它主要是实现将物理存储器中的一大块存储空间分割成多个大小不等的虚拟存储单元,用于存储不同的数据,从而模拟出多个逻辑独立的存储单元。虚拟存储技术的优势在于,为用户提供了可靠的数据存储能力,...

  • 大数据存储是什么意思?

    大数据存储是什么意思?

    大数据存储是一种存储解决方案,可将巨量的结构化和非结构化数据存储到集群中,并以可扩展、高可用性及容错性的形式安全地存储、处理和管理数据。它支持分组存储、共享部署、海量存储空间和可拓展伸缩。大数据存储的概念实质上是基于数据的存储,即多个用户...

  • Blob 存储是什么

    Blob 存储是什么

    Blob存储是MicrosoftAzure中的一项功能,可让开发人员在Microsoft的云平台中存储非结构化数据。这些数据可以从世界上任何地方访问,可以包括音频,视频和文本。Blob存储是MicrosoftAzure中...

  • 什么是云存储 API

    什么是云存储 API

    云存储API是一种应用程序接口,它将基于本地的应用程序连接到基于云的存储系统,以便用户可以向其发送数据并访问和处理存储在其中的数据。云存储API是一种应用程序接口,它将基于本地的应用程序连接到基于云的存储系统,以便用户可以向其发送数据并...

  • 群晖NAS硬盘、存储空间和存储池之间有什么关系

    群晖NAS硬盘、存储空间和存储池之间有什么关系

    群晖NAS中数据存储的介质分为硬盘、存储空间和存储池。硬盘用于存储数据的物理存储设备;存储池是将许多物理硬盘聚合为一个大型存储空间;存储空间可以在存储池中创建一个或多个存储空间,以将硬盘的容量划分为可管理的空间。在群晖NAS中数据存储的...

  • 群晖NAS存储池故障如何修复

    群晖NAS存储池故障如何修复

    群晖NAS如果出现存储池故障,将显示一条消息,告知您系统无法再访问系统分区。执行以下操作以对此问题进行故障排除:使用管理员账号登陆群晖Synology后台;启动存储空间管理员;进入总览页面并单击修复链接。系统应开始修复系统分区。群晖N...

  • 周排行
  • 月排行
  • 年排行

精彩推荐