ORACLE 存储过程提高

摘要:
在内部异常中,SQLCODE返回Oracle错误的序列号,而SQLERRM返回相应的错误消息,该消息首先显示错误代码。sql语句中不能直接使用Sqlcode和sqlerrm。必须将它们分配给变量,然后才能在sql语句中使用,如下所示:d_trans_errorNUMBERd_trans_eerror_msgVARCHAR2d_trans_error:=SQLCODE;d_trans_error_msg:=SUBSTR;2.%TYPE和%ROWTYPE%TYPE的使用表明,Oracle提供了%TYPE定义方法,以使一个变量的数据类型与已定义的另一个变量数据类型一致。

1.SQLCODE和SQLERRM

2.%TYPE和%ROWTYPE的使用

3.sql%rowcount的作用

1.SQLCODE和SQLERRM 

SQLCode:数据库操作的返回码,其中

0--成功;
-1--失败;
100--没有检索到数据。
+1--用户自定义异常

sqlerrm函数返回指定错误代码的错误信息。 

在一个内在的异常中,SQLCODE返回Oracle错误的序号,而SQLERRM返回的是相应的错误消息,错误消息首先显示的是错误代码。

SQLCODE返回的是负数,除非Oracle的错误为“ORA-01403:NO DATA FOUND”(译:ORA-01403:未找到数据),当Oracle错误为“ORA-01403:NO DATA FOUND”时,其对应的SQLCODE为+100。对于用户自定义的异常,SQLCODE返回的是+1,而SQLERRM返回的是User-Defined Exception。  
一个Oracle的错误消息最多只能包含512个字节的错误代码。如果没有异常被触发,则SQLCODE返回0,SQLERRM返回“ORA-0000:normal, successful completion”。 

sqlerrm如何使用?
sqlcode和sqlerrm是不能直接在sql语句中使用,必须先将其赋给变量后,才能在sql语句中使用,如下:

  d_trans_error               NUMBER

   d_trans_error_msg     VARCHAR2(512)

   d_trans_error := SQLCODE;
   d_trans_error_msg := SUBSTR(SQLERRM,1,512);

 2.%TYPE和%ROWTYPE的使用

 %TYPE说明
为了使一个变量的数据类型与另一个已经定义了的变量(尤其是表的某一列)的数据类型相一致,Oracle提供了%TYPE定义方式。当被参照的那个变量的数据类型改变了之后,这个新定义的变量的数据类型会自动跟随其改变,容易保持一致,也不用修改PL/SQL程序了。当不能确切地知道被参照的那个变量的数据类型时,就只能采用这种方法定义变量的数据类型。

MSG VARCHAR2(20) :='小红'; 
STRSQL MSG%TYPE;

2 %ROWTYPE说明
如果一个表有较多的列,使用%ROWTYPE来定义一个表示表中一行记录的变量,比分别使用%TYPE来定义表示表中各个列的变量要简洁得多,并且不容易遗漏、出错。这样会增加程序的可维护性。

   为了使一个变量的数据类型与一个表中记录的各个列的数据类型相对应、一致,Oracle提供%ROWTYPE定义方式。当表的某些列的数据类型改变了之后,这个新定义的变量的数据类型会自动跟随其改变,容易保持一致,也不用修改PL/SQL程序了。当不能确切地知道被参照的那个表的结构及其数据类型时,就只能采用这种方法定义变量的数据类型。

   一行记录可以保存从一个表或游标中查询到的整个数据行的各列数据。一行记录的各个列与表中一行的各个列有相同的名称和数据类型。
比如游标

type cursor_type is ref cursor; 
table_cursor cursor_type; 
v_import_table tbl_name%rowtype; 
begin 
open table_cursor for select * from tbl_name; 
loop 
fetch table_cursor into v_import_table; 
exit when tbl_cursor%notfound; 
……….. 
end loop; 
close table_cursor; 
或者游标可以这样定义: 
cusor table_ cusor is select * from tbl_name 
3.游标的4个 属性 
%isopen:游标打开时返回true 
%found 游标结果集有数据返回true 
%notfound 游标结果集不存在数据时为true 
%rowcount 返回已提取数据的实际行数 

3.sql%rowcount的作用

sql%rowcount用于记录修改的条数,必须放在一个更新或者删除等修改类语句后面执行,select语句用于查询的话无法使用,

当你执行多条修改语句时,按照sql%rowcount 之前执行的最后一条语句修改数为准。

免责声明:文章转载自《ORACLE 存储过程提高》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇vant+vue控制列表展开Android开发之getX,getRawX,getWidth,getTranslationX等的区别下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

oracle 的用户管理 sqlplus的常用命令

创建用户:create user 用户名 identified by 密码; SQL> create user scw identified by 123; 用户已创建。 SQL> 在oracle中创建用户只能由管理员或者具有管理员的权限的用户创建 修改密码: 1.修改自己的密码: SQL> passw; 更改 SCW 的口令 旧口令...

filter_input() 函数

定义和用法 filter_input() 函数从脚本外部获取输入,并进行过滤。 本函数用于对来自非安全来源的变量进行验证,比如用户的输入。 本函数可从各种来源获取输入: INPUT_GET INPUT_POST INPUT_COOKIE INPUT_ENV INPUT_SERVER INPUT_SESSION (Not yet implemented)...

64/32位oracle客户端安装配置详细教程

如何连接远程oracle数据库? 之前的文章我们讲过linux程序员第一天需要配置scrt工具和ue工具,如果公司使用数据库产品的话,我们还需要了解如何去连接远程数据,接下来我们来介绍如何连接远程服务器上的oracle数据,以linux主机上的数据库为例. 首先来了解一下连接数据库具备的条件: 远程主机有oracle,并且已经启动. 本机装有oracle...

Oracle jdk 历史版本官方下载地址及下载方法

Oracle jdk 历史版本官方下载地址及下载方法 原文转载至:http://blog.csdn.net/chwshuang/article/details/54925950 平时要新装一个系统环境,或者下载最新的jdk,就需要到oracle官网去下载一个jdk,而目前生产环境都是1.7的环境下开发完成的,需要下载1.7版本的jdk,oracle官方网站...

oracle优化的几个简单步骤

数据库优化的讨论可以说是一个永恒的主题。资深的Oracle优化人员通常会要求提出性能问题的人对数据库做一个statspack,贴出数据库配置等等。还有的人认为要抓出执行最慢的语句来进行优化。但实际情况是,提出疑问的人很可能根本不懂执行计划,更不要说statspack了。而我认为,数据库优化,应该首先从大的方面考虑:网络、服务器硬件配置、操作系统配置、Ora...

使用orapki生成证书,配置Oracle数据使用SSL和TLS进行数据库连接的TCP/IP配置==TCPS

内容参考Oracle官方文档:   https://oracle-base.com/articles/misc/configure-tcpip-with-ssl-and-tls-for-database-connections   https://docs.oracle.com/cd/E11882_01/network.112/e40393/asoappf...